It should describe an int
1 auto result = describeType!int; 2 3 result.name.should.equal("int"); 4 result.unqualName.should.equal("int"); 5 result.fullyQualifiedName.should.equal("int"); 6 7 result.isBasicType.should.equal(true); 8 result.isBuiltinType.should.equal(true); 9 result.isConst.should.equal(false); 10 result.isInout.should.equal(false); 11 result.isImmutable.should.equal(false); 12 result.isShared.should.equal(false);
It should describe an int at compile time
enum result = describeType!int; result.name.should.equal("int"); result.unqualName.should.equal("int");
It should describe a const int
1 auto result = describeType!(const(int)); 2 3 result.name.should.equal("const(int)"); 4 result.unqualName.should.equal("int"); 5 6 result.isBasicType.should.equal(true); 7 result.isBuiltinType.should.equal(true); 8 result.isConst.should.equal(true); 9 result.isInout.should.equal(false); 10 result.isImmutable.should.equal(false); 11 result.isShared.should.equal(false);
It should describe an inout int
1 auto result = describeType!(inout(int)); 2 3 result.name.should.equal("inout(int)"); 4 result.unqualName.should.equal("int"); 5 6 result.isBasicType.should.equal(true); 7 result.isBuiltinType.should.equal(true); 8 result.isConst.should.equal(false); 9 result.isInout.should.equal(true); 10 result.isImmutable.should.equal(false); 11 result.isShared.should.equal(false);
It should describe an immutable int
1 auto result = describeType!(immutable(int)); 2 3 result.name.should.equal("immutable(int)"); 4 result.unqualName.should.equal("int"); 5 6 result.isBasicType.should.equal(true); 7 result.isBuiltinType.should.equal(true); 8 result.isConst.should.equal(false); 9 result.isInout.should.equal(false); 10 result.isImmutable.should.equal(true); 11 result.isShared.should.equal(false);
It should describe a shared int
1 auto result = describeType!(shared(int)); 2 3 result.name.should.equal("shared(int)"); 4 result.unqualName.should.equal("int"); 5 6 result.isBasicType.should.equal(true); 7 result.isBuiltinType.should.equal(true); 8 result.isConst.should.equal(false); 9 result.isInout.should.equal(false); 10 result.isImmutable.should.equal(false); 11 result.isShared.should.equal(true);
It should describe a int pointer
1 auto result = describeType!(int*); 2 3 result.name.should.equal("int*"); 4 result.unqualName.should.equal("int*"); 5 6 result.isBasicType.should.equal(false); 7 result.isBuiltinType.should.equal(false); 8 result.isConst.should.equal(false); 9 result.isInout.should.equal(false); 10 result.isImmutable.should.equal(false); 11 result.isShared.should.equal(false);
It should describe a manifest constant
1 enum a = "value"; 2 auto result = describeType!(a); 3 4 result.name.should.equal("string"); 5 result.unqualName.should.equal("string"); 6 7 result.isBasicType.should.equal(false); 8 result.isBuiltinType.should.equal(true); 9 result.isConst.should.equal(false); 10 result.isInout.should.equal(false); 11 result.isImmutable.should.equal(false); 12 result.isShared.should.equal(false); 13 result.isManifestConstant.should.equal(true);
It shuld describe an array of ints
1 auto result = describeType!(int[]); 2 3 result.name.should.equal("int[]"); 4 result.unqualName.should.equal("int[]"); 5 6 result.isArray.should.equal(true); 7 result.keyType.should.equal("size_t"); 8 result.valueType.should.equal("int");
It shuld describe an array of strings
1 auto result = describeType!(string[]); 2 3 result.name.should.equal("string[]"); 4 result.unqualName.should.equal("string[]"); 5 6 result.isArray.should.equal(true); 7 result.keyType.should.equal("size_t"); 8 result.valueType.should.equal("string");
It shuld describe an assoc array of ints
1 auto result = describeType!(int[string]); 2 3 result.name.should.equal("int[string]"); 4 result.unqualName.should.equal("int[string]"); 5 6 result.isArray.should.equal(false); 7 result.isAssociativeArray.should.equal(true); 8 result.keyType.should.equal("string"); 9 result.valueType.should.equal("int");
It shuld describe an assoc array of strings
1 auto result = describeType!(string[string]); 2 3 result.name.should.equal("string[string]"); 4 result.unqualName.should.equal("string[string]"); 5 6 result.isArray.should.equal(false); 7 result.isAssociativeArray.should.equal(true); 8 result.keyType.should.equal("string"); 9 result.valueType.should.equal("string");
It shuld describe a nested array
1 auto result = describeType!(int[ulong][][ulong]); 2 3 result.name.should.equal("int[ulong][][ulong]"); 4 result.unqualName.should.equal("int[ulong][][ulong]"); 5 6 result.isArray.should.equal(false); 7 result.isAssociativeArray.should.equal(true); 8 result.keyType.should.equal("ulong"); 9 result.valueType.should.equal("int[ulong][]");
It should describe a struct
1 struct Test {} 2 3 auto result = describeType!Test; 4 5 result.name.should.equal("Test"); 6 result.unqualName.should.equal("Test"); 7 result.fullyQualifiedName.should.equal("introspection.type.__unittest_L344_C1.Test"); 8 9 result.isStruct.should.equal(true); 10 result.isBasicType.should.equal(false); 11 result.isBuiltinType.should.equal(false); 12 result.isConst.should.equal(false); 13 result.isInout.should.equal(false); 14 result.isImmutable.should.equal(false); 15 result.isShared.should.equal(false);
It should describe a class
1 class Test {} 2 3 auto result = describeType!Test; 4 5 result.name.should.equal("Test"); 6 result.unqualName.should.equal("Test"); 7 8 result.isStruct.should.equal(false); 9 result.isClass.should.equal(true); 10 result.isBasicType.should.equal(false); 11 result.isBuiltinType.should.equal(false); 12 result.isConst.should.equal(false); 13 result.isInout.should.equal(false); 14 result.isImmutable.should.equal(false); 15 result.isShared.should.equal(false);
It should describe an union
1 union Test {} 2 3 auto result = describeType!Test; 4 5 result.name.should.equal("Test"); 6 result.unqualName.should.equal("Test"); 7 8 result.isStruct.should.equal(false); 9 result.isClass.should.equal(false); 10 result.isUnion.should.equal(true); 11 result.isBasicType.should.equal(false); 12 result.isBuiltinType.should.equal(false); 13 result.isConst.should.equal(false); 14 result.isInout.should.equal(false); 15 result.isImmutable.should.equal(false); 16 result.isShared.should.equal(false);
It should describe an interface
1 interface Test {} 2 3 auto result = describeType!Test; 4 5 result.name.should.equal("Test"); 6 result.unqualName.should.equal("Test"); 7 8 result.isStruct.should.equal(false); 9 result.isClass.should.equal(false); 10 result.isUnion.should.equal(false); 11 result.isInterface.should.equal(true); 12 result.isBasicType.should.equal(false); 13 result.isBuiltinType.should.equal(false); 14 result.isConst.should.equal(false); 15 result.isInout.should.equal(false); 16 result.isImmutable.should.equal(false); 17 result.isShared.should.equal(false);
It should describe an enum
1 enum Test { 2 a,b,c 3 } 4 5 auto result = describeType!Test; 6 7 result.name.should.equal("Test"); 8 result.unqualName.should.equal("Test"); 9 result.module_.should.equal("introspection.type"); 10 11 result.isStruct.should.equal(false); 12 result.isClass.should.equal(false); 13 result.isUnion.should.equal(false); 14 result.isInterface.should.equal(false); 15 result.isEnum.should.equal(true); 16 result.isBasicType.should.equal(false); 17 result.isBuiltinType.should.equal(false); 18 result.isConst.should.equal(false); 19 result.isInout.should.equal(false); 20 result.isImmutable.should.equal(false); 21 result.isShared.should.equal(false);
Describe a type