Mercurial > projects > ldc
diff test/typeinfo10.d @ 72:d7e764e62462 trunk
[svn r76] Fixed: TypeInfo for structs.
Fixed: PostExp was unable to allocate storage for parameters.
Fixed: Many types of functions and delegates were broken.
Misc cleanups.
author | lindquist |
---|---|
date | Mon, 29 Oct 2007 03:28:12 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/typeinfo10.d Mon Oct 29 03:28:12 2007 +0100 @@ -0,0 +1,64 @@ +module typeinfo10; + +struct S +{ + long l; + float f; + void* vp; + + hash_t toHash() + { + return l + cast(size_t)f; + } + + int opEquals(S s) + { + return (s.l == l) && (s.f == f); + } + + int opCmp(S a) + { + if (l == a.l) { + return (f < a.f) ? -1 : (f > a.f) ? 1 : 0; + } + return (l < a.l) ? -1 : 1; + } + + char[] toString() + { + return "S instance"; + } +} + +void main() +{ + S s=S(-1, 0); + S t=S(-1, 1); + S u=S(11,-1); + S v=S(12,13); + + { + assert(s == s); + assert(s != t); + assert(s != v); + assert(s < t); + assert(u > s); + assert(v > u); + } + + { + auto ti = typeid(S); + assert(ti.getHash(&s) == s.toHash()); + assert(ti.equals(&s,&s)); + assert(!ti.equals(&s,&t)); + assert(!ti.equals(&s,&v)); + assert(ti.compare(&s,&s) == 0); + assert(ti.compare(&s,&t) < 0); + assert(ti.compare(&u,&s) > 0); + assert(ti.compare(&v,&u) > 0); + { + auto tis = cast(TypeInfo_Struct)ti; + assert(tis.xtoString(&s) == s.toString()); + } + } +}