Mercurial > projects > ldc
annotate test/bitops.d @ 129:8096ba7082db trunk
[svn r133] Fixed some problems with inlining not happening :P
Fixed problems with certain cases of deeply nested classes/functions.
author | lindquist |
---|---|
date | Fri, 28 Dec 2007 22:55:24 +0100 |
parents | fd32135dca3e |
children | d9d5d59873d8 |
rev | line source |
---|---|
1 | 1 void main() |
2 { | |
3 printf("Bitwise operations test\n"); | |
4 { ushort a = 0xFFF0; | |
5 ushort b = 0x0FFF; | |
6 assert((a&b) == 0x0FF0); | |
7 assert((a|b) == 0xFFFF); | |
8 assert((a^b) == 0xF00F); | |
9 } | |
10 { ubyte a = 0xFF; | |
11 ulong b = 0xFFFF_FFFF_FFFF_FFF0; | |
12 assert((a&b) == 0xF0); | |
13 } | |
14 { ushort s = 0xFF; | |
15 assert((s<<1) == s*2); | |
16 assert((s>>>1) == s/2); | |
17 } | |
18 { int s = -10; | |
19 assert((s>>1) == -5); | |
20 assert((s>>>1) != -5); | |
21 } | |
86
fd32135dca3e
[svn r90] Major updates to the gen directory. Redesigned the 'elem' struct. Much more... !!!
lindquist
parents:
1
diff
changeset
|
22 |
1 | 23 { ushort a = 0xFFF0; |
24 ushort b = 0x0FFF; | |
25 auto t = a; | |
26 t &= b; | |
27 assert(t == 0x0FF0); | |
28 t = a; | |
29 t |= b; | |
30 assert(t == 0xFFFF); | |
31 t = a; | |
32 t ^= b; | |
33 assert(t == 0xF00F); | |
34 } | |
35 { ubyte a = 0xFF; | |
36 ulong b = 0xFFFF_FFFF_FFFF_FFF0; | |
37 a &= b; | |
38 assert(a == 0xF0); | |
39 } | |
40 { ushort s = 0xFF; | |
41 auto t = s; | |
42 t <<= 1; | |
43 assert(t == (s*2)); | |
44 t = s; | |
45 t >>>= 1; | |
46 assert(t == s/2); | |
47 } | |
48 { int s = -10; | |
49 auto t = s; | |
50 t >>= 1; | |
51 assert(t == -5); | |
52 t = s; | |
53 t >>>= 1; | |
54 assert(t != -5); | |
55 } | |
56 { struct S | |
57 { | |
58 uint i; | |
59 ulong l; | |
60 }; | |
61 S s = S(1,4); | |
62 auto a = s.i | s.l; | |
63 assert(a == 5); | |
64 s.i = 0xFFFF_00FF; | |
65 s.l = 0xFFFF_FFFF_0000_FF00; | |
66 s.l ^= s.i; | |
67 assert(s.l == ulong.max); | |
68 s.i = 0x__FFFF_FF00; | |
69 s.l = 0xFF00FF_FF00; | |
70 s.i &= s.l; | |
71 assert(s.i == 0x00FF_FF00); | |
72 } | |
86
fd32135dca3e
[svn r90] Major updates to the gen directory. Redesigned the 'elem' struct. Much more... !!!
lindquist
parents:
1
diff
changeset
|
73 |
1 | 74 printf(" SUCCESS\n"); |
75 } |