1 module ut.meta.types; 2 3 4 import ut.meta; 5 6 7 @("empty") 8 @safe pure unittest { 9 alias mod = Module!"modules.empty"; 10 typeNames!mod.should == []; 11 } 12 13 14 @("imports") 15 @safe pure unittest { 16 alias mod = Module!"modules.imports"; 17 typeNames!mod.should == []; 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 ] 40 ); 41 } 42 43 44 @("problems") 45 @safe pure unittest { 46 alias mod = Module!"modules.problems"; 47 typeNames!mod.should == []; 48 } 49 50 51 @("variables") 52 @safe pure unittest { 53 alias mod = Module!"modules.variables"; 54 typeNames!mod.should == ["Struct"]; 55 } 56 57 58 private string[] typeNames(alias module_)() { 59 import std.meta: staticMap; 60 enum name(alias Symbol) = __traits(identifier, Symbol); 61 enum names = staticMap!(name, module_.Aggregates); 62 return [names]; 63 }