1 module ut.meta.reflection.types; 2 3 4 import ut.meta.reflection; 5 6 7 @("empty") 8 @safe pure unittest { 9 alias mod = Module!"modules.empty"; 10 typeNames!mod.shouldBeEmpty; 11 } 12 13 14 @("imports") 15 @safe pure unittest { 16 alias mod = Module!"modules.imports"; 17 typeNames!mod.shouldBeEmpty; 18 } 19 20 21 @("types") 22 @safe pure unittest { 23 alias mod = Module!"modules.types"; 24 typeNames!mod.shouldBeSameSetAs( 25 [ 26 "String", 27 "Enum", 28 "Class", 29 "Interface", 30 "AbstractClass", 31 "MiddleClass", 32 "LeafClass", 33 "Point", 34 "Inner1", 35 "EvenInner", 36 "Inner2", 37 "Outer", 38 "Char", 39 "Union", 40 ] 41 ); 42 } 43 44 45 @("problems") 46 @safe pure unittest { 47 alias mod = Module!"modules.problems"; 48 typeNames!mod.shouldBeEmpty; 49 } 50 51 52 @("variables") 53 @safe pure unittest { 54 alias mod = Module!"modules.variables"; 55 typeNames!mod.should == ["Struct"]; 56 } 57 58 59 private string[] typeNames(alias module_)() { 60 import std.meta: staticMap; 61 enum name(alias Symbol) = __traits(identifier, Symbol); 62 enum names = staticMap!(name, module_.Aggregates); 63 return [names]; 64 }