module ut.rtti.any; import ut; import mirror.rtti; @("types.int") @safe unittest { auto extended = types!int; } @("rtti.null.object") @safe unittest { static class Class {} Object o; Class c; with(types!Class) { rtti(o).shouldThrowWithMessage("Cannot get RTTI from null object"); rtti(c).shouldThrowWithMessage("Cannot get RTTI from null object"); } } @("rtti.unregistered") @safe unittest { static class Class {} enum testName = __traits(identifier, __traits(parent, {})); enum prefix = __MODULE__ ~ "." ~ testName ~ "."; with(types!()) { rtti(new Class).shouldThrowWithMessage( "Cannot get RTTI for unregistered type " ~ prefix ~ "Class" ); } } @("typesVar") @safe unittest { static struct Namespace { static immutable mirror.rtti.Types _types; mixin typesVar!(_types, int, double); } with(Namespace._types) { rtti(42).name.should == "int"; rtti(33.3).name.should == "double"; } }