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 }