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 }