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 ] 34 ); 35 } 36 37 38 @("problems") 39 @safe pure unittest { 40 alias mod = Module!"modules.problems"; 41 typeNames!mod.should == []; 42 } 43 44 45 @("variables") 46 @safe pure unittest { 47 alias mod = Module!"modules.variables"; 48 typeNames!mod.should == ["Struct"]; 49 } 50 51 52 private string[] typeNames(alias module_)() { 53 import std.meta: staticMap; 54 enum name(alias Symbol) = __traits(identifier, Symbol); 55 enum names = staticMap!(name, module_.Aggregates); 56 return [names]; 57 }