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 }