OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 // Dart test for testing bitwise operations. | 4 // Dart test for testing bitwise operations. |
5 // VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-co
mpilation | 5 // VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-co
mpilation |
6 | 6 |
7 import "package:expect/expect.dart"; | 7 import "package:expect/expect.dart"; |
8 | 8 |
9 void main() { | 9 void main() { |
10 for (int i = 0; i < 4; i++) { | 10 for (int i = 0; i < 4; i++) { |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 void testRightShift64Bit() { | 86 void testRightShift64Bit() { |
87 var t = 0x1ffffffff; | 87 var t = 0x1ffffffff; |
88 Expect.equals(0xffffffff, t >> 1); | 88 Expect.equals(0xffffffff, t >> 1); |
89 } | 89 } |
90 | 90 |
91 void testLeftShift64Bit() { | 91 void testLeftShift64Bit() { |
92 var t = 0xffffffff; | 92 var t = 0xffffffff; |
93 Expect.equals(0xffffffff, t << 0); | 93 Expect.equals(0xffffffff, t << 0); |
94 Expect.equals(0x1fffffffe, t << 1); | 94 Expect.equals(0x1fffffffe, t << 1); |
95 Expect.equals(0x7fffffff80000000, t << 31); | 95 Expect.equals(0x7fffffff80000000, t << 31); |
96 Expect.equals(0x10000000000000000, 2*(t+1) << 31); /// 01: static type warning | 96 Expect.equals(0x10000000000000000, 2*(t+1) << 31); //# 01: static type warning |
97 Expect.equals(0x20000000000000000, 4*(t+1) << 31); /// 02: static type warning | 97 Expect.equals(0x20000000000000000, 4*(t+1) << 31); //# 02: static type warning |
98 Expect.equals(0x8000000000000000, (t+1) << 31); | 98 Expect.equals(0x8000000000000000, (t+1) << 31); |
99 } | 99 } |
100 | 100 |
101 void testLeftShift64BitWithOverflow1() { | 101 void testLeftShift64BitWithOverflow1() { |
102 var t = 0xffffffff; | 102 var t = 0xffffffff; |
103 Expect.equals(0x10000000000000000, 2*(t+1) << 31); /// 03: static type warning | 103 Expect.equals(0x10000000000000000, 2*(t+1) << 31); //# 03: static type warning |
104 } | 104 } |
105 | 105 |
106 void testLeftShift64BitWithOverflow2() { | 106 void testLeftShift64BitWithOverflow2() { |
107 var t = 0xffffffff; | 107 var t = 0xffffffff; |
108 Expect.equals(0x20000000000000000, 4*(t+1) << 31); /// 04: static type warning | 108 Expect.equals(0x20000000000000000, 4*(t+1) << 31); //# 04: static type warning |
109 } | 109 } |
110 | 110 |
111 void testLeftShift64BitWithOverflow3() { | 111 void testLeftShift64BitWithOverflow3() { |
112 var t = 0xffffffff; | 112 var t = 0xffffffff; |
113 Expect.equals(0x8000000000000000, (t+1) << 31); | 113 Expect.equals(0x8000000000000000, (t+1) << 31); |
114 } | 114 } |
115 | 115 |
116 void testNegativeCountShifts() { | 116 void testNegativeCountShifts() { |
117 bool throwOnLeft(a, b) { | 117 bool throwOnLeft(a, b) { |
118 try { | 118 try { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 Expect.notEquals((a & b) ^ (c | (d & b)) ^ c, result); // &|^ | 186 Expect.notEquals((a & b) ^ (c | (d & b)) ^ c, result); // &|^ |
187 Expect.notEquals((a & b) ^ ((c | d) & b) ^ c, result); // |&^ | 187 Expect.notEquals((a & b) ^ ((c | d) & b) ^ c, result); // |&^ |
188 Expect.notEquals(a & (b ^ (c | d)) & (b ^ c), result); // |^& | 188 Expect.notEquals(a & (b ^ (c | d)) & (b ^ c), result); // |^& |
189 Expect.notEquals(a & ((b ^ c) | d) & (b ^ c), result); // ^|& | 189 Expect.notEquals(a & ((b ^ c) | d) & (b ^ c), result); // ^|& |
190 // Binds stronger than relational operators. | 190 // Binds stronger than relational operators. |
191 Expect.equals((a & b) < (c & d), a & b < c & d); | 191 Expect.equals((a & b) < (c & d), a & b < c & d); |
192 // Binds weaker than shift operators. | 192 // Binds weaker than shift operators. |
193 Expect.equals((a & (b << c)) ^ d, a & b << c ^ d); | 193 Expect.equals((a & (b << c)) ^ d, a & b << c ^ d); |
194 Expect.notEquals((a & b) << (c ^ d), a & b << c ^ d); | 194 Expect.notEquals((a & b) << (c ^ d), a & b << c ^ d); |
195 } | 195 } |
OLD | NEW |