comparison tests/mini/bitops.d @ 341:1bb99290e03a trunk

[svn r362] Started merging the old 'test' dir as well as the newer 'tangotests' dir into 'tests/mini' and 'tests/minicomplex'.
author lindquist
date Sun, 13 Jul 2008 02:51:19 +0200
parents test/bitops.d@d9d5d59873d8
children
comparison
equal deleted inserted replaced
340:351c0077d0b3 341:1bb99290e03a
1
2 extern(C) int printf(char*, ...);
3
4 void main()
5 {
6 printf("Bitwise operations test\n");
7 { ushort a = 0xFFF0;
8 ushort b = 0x0FFF;
9 assert((a&b) == 0x0FF0);
10 assert((a|b) == 0xFFFF);
11 assert((a^b) == 0xF00F);
12 }
13 { ubyte a = 0xFF;
14 ulong b = 0xFFFF_FFFF_FFFF_FFF0;
15 assert((a&b) == 0xF0);
16 }
17 { ushort s = 0xFF;
18 assert((s<<1) == s*2);
19 assert((s>>>1) == s/2);
20 }
21 { int s = -10;
22 assert((s>>1) == -5);
23 assert((s>>>1) != -5);
24 }
25
26 { ushort a = 0xFFF0;
27 ushort b = 0x0FFF;
28 auto t = a;
29 t &= b;
30 assert(t == 0x0FF0);
31 t = a;
32 t |= b;
33 assert(t == 0xFFFF);
34 t = a;
35 t ^= b;
36 assert(t == 0xF00F);
37 }
38 { ubyte a = 0xFF;
39 ulong b = 0xFFFF_FFFF_FFFF_FFF0;
40 a &= b;
41 assert(a == 0xF0);
42 }
43 { ushort s = 0xFF;
44 auto t = s;
45 t <<= 1;
46 assert(t == (s*2));
47 t = s;
48 t >>>= 1;
49 assert(t == s/2);
50 }
51 { int s = -10;
52 auto t = s;
53 t >>= 1;
54 assert(t == -5);
55 t = s;
56 t >>>= 1;
57 assert(t != -5);
58 }
59 { struct S
60 {
61 uint i;
62 ulong l;
63 };
64 S s = S(1,4);
65 auto a = s.i | s.l;
66 assert(a == 5);
67 s.i = 0xFFFF_00FF;
68 s.l = 0xFFFF_FFFF_0000_FF00;
69 s.l ^= s.i;
70 assert(s.l == ulong.max);
71 s.i = 0x__FFFF_FF00;
72 s.l = 0xFF00FF_FF00;
73 s.i &= s.l;
74 assert(s.i == 0x00FF_FF00);
75 }
76
77 printf(" SUCCESS\n");
78 }