authorgravatar for kris.tate+github@gmail.comkristopher tate <kris.tate+github@gmail.com> 2018-12-20 22:49:09+09:00
committergravatar for kris.tate+github@gmail.comkristopher tate <kris.tate+github@gmail.com> 2018-12-20 22:53:54+09:00
logfb81b1978b87be5a72328a4d9efc21561ae53cfc
tree69c5ba9a62c4bea4fd2c3b9e895575fa84e4d956
parent39567e8b50e9026288bb1323d84f481740bd0de7
signature Commit is signed but in an unrecognized format.

tests: re: 79db394;

ref: ziglang/zig#1832

2 files changed, 53 insertions(+), 0 deletions(-)

std/array_list.zig+11
...@@ -398,3 +398,14 @@ test "std.ArrayList.insertSlice" {...@@ -398,3 +398,14 @@ test "std.ArrayList.insertSlice" {
398 assert(list.len == 6);398 assert(list.len == 6);
399 assert(list.items[0] == 1);399 assert(list.items[0] == 1);
400}400}
401
402const Item = struct {
403 integer: i32,
404 sub_items: ArrayList(Item),
405};
406
407test "std.ArrayList: ArrayList(T) of struct T" {
408 var root = Item{ .integer = 1, .sub_items = ArrayList(Item).init(debug.global_allocator) };
409 try root.sub_items.append( Item{ .integer = 42, .sub_items = ArrayList(Item).init(debug.global_allocator) } );
410 assert(root.sub_items.items[0].integer == 42);
411}
test/cases/struct_contains_slice_of_itself.zig+42
...@@ -5,6 +5,11 @@ const Node = struct {...@@ -5,6 +5,11 @@ const Node = struct {
5 children: []Node,5 children: []Node,
6};6};
77
8const NodeAligned = struct {
9 payload: i32,
10 children: []align(@alignOf(NodeAligned)) NodeAligned,
11};
12
8test "struct contains slice of itself" {13test "struct contains slice of itself" {
9 var other_nodes = []Node{14 var other_nodes = []Node{
10 Node{15 Node{
...@@ -41,3 +46,40 @@ test "struct contains slice of itself" {...@@ -41,3 +46,40 @@ test "struct contains slice of itself" {
41 assert(root.children[2].children[0].payload == 31);46 assert(root.children[2].children[0].payload == 31);
42 assert(root.children[2].children[1].payload == 32);47 assert(root.children[2].children[1].payload == 32);
43}48}
49
50test "struct contains aligned slice of itself" {
51 var other_nodes = []NodeAligned{
52 NodeAligned{
53 .payload = 31,
54 .children = []NodeAligned{},
55 },
56 NodeAligned{
57 .payload = 32,
58 .children = []NodeAligned{},
59 },
60 };
61 var nodes = []NodeAligned{
62 NodeAligned{
63 .payload = 1,
64 .children = []NodeAligned{},
65 },
66 NodeAligned{
67 .payload = 2,
68 .children = []NodeAligned{},
69 },
70 NodeAligned{
71 .payload = 3,
72 .children = other_nodes[0..],
73 },
74 };
75 const root = NodeAligned{
76 .payload = 1234,
77 .children = nodes[0..],
78 };
79 assert(root.payload == 1234);
80 assert(root.children[0].payload == 1);
81 assert(root.children[1].payload == 2);
82 assert(root.children[2].payload == 3);
83 assert(root.children[2].children[0].payload == 31);
84 assert(root.children[2].children[1].payload == 32);
85}