| ... | ... | @@ -901,3 +901,52 @@ test "sorting a span" { |
| 901 | 901 | c += 1; |
| 902 | 902 | } |
| 903 | 903 | } |
| 904 | |
| 905 | test "0 sized struct field" { |
| 906 | const ally = testing.allocator; |
| 907 | |
| 908 | const Foo = struct { |
| 909 | a: u0, |
| 910 | b: f32, |
| 911 | }; |
| 912 | |
| 913 | var list = MultiArrayList(Foo){}; |
| 914 | defer list.deinit(ally); |
| 915 | |
| 916 | try testing.expectEqualSlices(u0, &[_]u0{}, list.items(.a)); |
| 917 | try testing.expectEqualSlices(f32, &[_]f32{}, list.items(.b)); |
| 918 | |
| 919 | try list.append(ally, .{ .a = 0, .b = 42.0 }); |
| 920 | try testing.expectEqualSlices(u0, &[_]u0{0}, list.items(.a)); |
| 921 | try testing.expectEqualSlices(f32, &[_]f32{42.0}, list.items(.b)); |
| 922 | |
| 923 | try list.insert(ally, 0, .{ .a = 0, .b = -1.0 }); |
| 924 | try testing.expectEqualSlices(u0, &[_]u0{ 0, 0 }, list.items(.a)); |
| 925 | try testing.expectEqualSlices(f32, &[_]f32{ -1.0, 42.0 }, list.items(.b)); |
| 926 | |
| 927 | list.swapRemove(list.len - 1); |
| 928 | try testing.expectEqualSlices(u0, &[_]u0{0}, list.items(.a)); |
| 929 | try testing.expectEqualSlices(f32, &[_]f32{-1.0}, list.items(.b)); |
| 930 | } |
| 931 | |
| 932 | test "0 sized struct" { |
| 933 | const ally = testing.allocator; |
| 934 | |
| 935 | const Foo = struct { |
| 936 | a: u0, |
| 937 | }; |
| 938 | |
| 939 | var list = MultiArrayList(Foo){}; |
| 940 | defer list.deinit(ally); |
| 941 | |
| 942 | try testing.expectEqualSlices(u0, &[_]u0{}, list.items(.a)); |
| 943 | |
| 944 | try list.append(ally, .{ .a = 0 }); |
| 945 | try testing.expectEqualSlices(u0, &[_]u0{0}, list.items(.a)); |
| 946 | |
| 947 | try list.insert(ally, 0, .{ .a = 0 }); |
| 948 | try testing.expectEqualSlices(u0, &[_]u0{ 0, 0 }, list.items(.a)); |
| 949 | |
| 950 | list.swapRemove(list.len - 1); |
| 951 | try testing.expectEqualSlices(u0, &[_]u0{0}, list.items(.a)); |
| 952 | } |