1 module ut.translation.node.structs;
2 
3 
4 import ut.translation.node;
5 import std.array: join;
6 
7 
8 @("onefield.int")
9 @safe pure unittest {
10     enum node = Node(
11         Struct(
12             "Foo",
13             [
14                 Field(
15                     Type(Int()),
16                     "i",
17                 ),
18             ]
19         )
20     );
21 
22     enum translation = translate(node);
23     writelnUt(translation);
24     mixin(`static ` ~ translation.join("\n"));
25 
26     static assert(Foo.tupleof.length == 1);
27     static assert(is(typeof(Foo.i) == int));
28 }
29 
30 
31 @("onefield.double")
32 @safe pure unittest {
33     enum node = Node(
34         Struct(
35             "Bar",
36             [
37                 Field(
38                     Type(Double()),
39                     "d",
40                 ),
41             ]
42         )
43     );
44 
45     enum translation = translate(node);
46     writelnUt(translation);
47     mixin(`static ` ~ translation.join("\n"));
48 
49     static assert(Bar.tupleof.length == 1);
50     static assert(is(typeof(Bar.d) == double));
51 }
52 
53 
54 @("twofields")
55 @safe pure unittest {
56     enum node = Node(
57         Struct(
58             "Baz",
59             [
60                 Field(
61                     Type(Int()),
62                     "i",
63                 ),
64                 Field(
65                     Type(Double()),
66                     "d",
67                 ),
68             ]
69         )
70     );
71 
72     enum translation = translate(node);
73     writelnUt(translation);
74     mixin(`static ` ~ translation.join("\n"));
75 
76     static assert(Baz.tupleof.length == 2);
77     static assert(is(typeof(Baz.i) == int));
78     static assert(is(typeof(Baz.d) == double));
79 }