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 }