Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 | 4 |
| 5 library int64test; | 5 library int64test; |
| 6 import 'package:fixnum/fixnum.dart'; | 6 import 'package:fixnum/fixnum.dart'; |
| 7 import 'package:unittest/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
| 8 | 8 |
| 9 void main() { | 9 void main() { |
| 10 group("is-tests", () { | |
| 11 test("isEven", () { | |
| 12 expect((-Int64.ONE).isEven, false); | |
| 13 expect(Int64.ZERO.isEven, true); | |
| 14 expect(Int64.ONE.isEven, false); | |
| 15 expect(Int64.TWO.isEven, true); | |
| 16 }); | |
| 17 test("isMaxValue", () { | |
| 18 expect(Int64.MIN_VALUE.isMaxValue, false); | |
| 19 expect(Int64.ZERO.isMaxValue, false); | |
| 20 expect(Int64.MAX_VALUE.isMaxValue, true); | |
| 21 }); | |
| 22 test("isMinValue", () { | |
| 23 expect(Int64.MIN_VALUE.isMinValue, true); | |
| 24 expect(Int64.ZERO.isMinValue, false); | |
| 25 expect(Int64.MAX_VALUE.isMinValue, false); | |
| 26 }); | |
| 27 test("isNegative", () { | |
| 28 expect(Int64.MIN_VALUE.isNegative, true); | |
| 29 expect(Int64.ZERO.isNegative, false); | |
| 30 expect(Int64.ONE.isNegative, false); | |
| 31 }); | |
| 32 test("isOdd", () { | |
| 33 expect((-Int64.ONE).isOdd, true); | |
| 34 expect(Int64.ZERO.isOdd, false); | |
| 35 expect(Int64.ONE.isOdd, true); | |
| 36 expect(Int64.TWO.isOdd, false); | |
| 37 }); | |
| 38 test("isZero", () { | |
| 39 expect(Int64.MIN_VALUE.isZero, false); | |
| 40 expect(Int64.ZERO.isZero, true); | |
| 41 expect(Int64.MAX_VALUE.isZero, false); | |
| 42 }); | |
| 43 test("bitLength", () { | |
| 44 expect(new Int64(-2).bitLength, 1); | |
| 45 expect((-Int64.ONE).bitLength, 0); | |
| 46 expect(Int64.ZERO.bitLength, 0); | |
| 47 expect((Int64.ONE << 21).bitLength, 22); | |
| 48 expect((Int64.ONE << 22).bitLength, 23); | |
| 49 expect((Int64.ONE << 43).bitLength, 44); | |
| 50 expect((Int64.ONE << 44).bitLength, 45); | |
| 51 expect(new Int64(2).bitLength, 2); | |
| 52 expect(Int64.MAX_VALUE.bitLength, 63); | |
| 53 expect(Int64.MIN_VALUE.bitLength, 63); | |
| 54 }); | |
| 55 }); | |
| 56 | |
| 10 group("arithmetic operators", () { | 57 group("arithmetic operators", () { |
| 11 Int64 n1 = new Int64(1234); | 58 Int64 n1 = new Int64(1234); |
| 12 Int64 n2 = new Int64(9876); | 59 Int64 n2 = new Int64(9876); |
| 13 Int64 n3 = new Int64(-1234); | 60 Int64 n3 = new Int64(-1234); |
| 14 Int64 n4 = new Int64(-9876); | 61 Int64 n4 = new Int64(-9876); |
| 15 Int64 n5 = new Int64.fromInts(0x12345678, 0xabcdabcd); | 62 Int64 n5 = new Int64.fromInts(0x12345678, 0xabcdabcd); |
| 16 Int64 n6 = new Int64.fromInts(0x77773333, 0x22224444); | 63 Int64 n6 = new Int64.fromInts(0x77773333, 0x22224444); |
| 17 | 64 |
| 18 test("+", () { | 65 test("+", () { |
| 19 expect(n1 + n2, new Int64(11110)); | 66 expect(n1 + n2, new Int64(11110)); |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 172 new Int64(0x12345678.remainder(0x22))); | 219 new Int64(0x12345678.remainder(0x22))); |
| 173 expect(new Int64(0x12345678).remainder(new Int64(-0x22)), | 220 expect(new Int64(0x12345678).remainder(new Int64(-0x22)), |
| 174 new Int64(0x12345678.remainder(-0x22))); | 221 new Int64(0x12345678.remainder(-0x22))); |
| 175 expect(new Int64(-0x12345678).remainder(new Int64(-0x22)), | 222 expect(new Int64(-0x12345678).remainder(new Int64(-0x22)), |
| 176 new Int64(-0x12345678.remainder(-0x22))); | 223 new Int64(-0x12345678.remainder(-0x22))); |
| 177 expect(new Int64(-0x12345678).remainder(new Int64(0x22)), | 224 expect(new Int64(-0x12345678).remainder(new Int64(0x22)), |
| 178 new Int64(-0x12345678.remainder(0x22))); | 225 new Int64(-0x12345678.remainder(0x22))); |
| 179 expect(new Int32(0x12345678).remainder(new Int64(0x22)), | 226 expect(new Int32(0x12345678).remainder(new Int64(0x22)), |
| 180 new Int64(0x12345678.remainder(0x22))); | 227 new Int64(0x12345678.remainder(0x22))); |
| 181 }); | 228 }); |
| 229 | |
| 230 test("clamp", () { | |
| 231 Int64 val = new Int64.fromInt(17); | |
| 232 expect(val.clamp(20, 30), new Int64.fromInt(20)); | |
| 233 expect(val.clamp(10, 20), new Int64.fromInt(17)); | |
| 234 expect(val.clamp(10, 15), new Int64.fromInt(15)); | |
| 235 | |
| 236 expect(val.clamp(new Int32.fromInt(20), new Int32.fromInt(30)), new Int64. fromInt(20)); | |
| 237 expect(val.clamp(new Int32.fromInt(10), new Int32.fromInt(20)), new Int64. fromInt(17)); | |
| 238 expect(val.clamp(new Int32.fromInt(10), new Int32.fromInt(15)), new Int64. fromInt(15)); | |
| 239 | |
| 240 expect(val.clamp(new Int64.fromInt(20), new Int64.fromInt(30)), new Int64. fromInt(20)); | |
| 241 expect(val.clamp(new Int64.fromInt(10), new Int64.fromInt(20)), new Int64. fromInt(17)); | |
| 242 expect(val.clamp(new Int64.fromInt(10), new Int64.fromInt(15)), new Int64. fromInt(15)); | |
| 243 expect(val.clamp(Int64.MIN_VALUE, new Int64.fromInt(30)), new Int64.fromIn t(17)); | |
| 244 expect(val.clamp(new Int64.fromInt(10), Int64.MAX_VALUE), new Int64.fromIn t(17)); | |
| 245 | |
| 246 expect(() => val.clamp(1, 'b'), throwsA(isArgumentError)); | |
| 247 expect(() => val.clamp('a', 1), throwsA(isArgumentError)); | |
| 248 }); | |
| 182 }); | 249 }); |
| 183 | 250 |
| 184 group("comparison operators", () { | 251 group("comparison operators", () { |
| 185 Int64 largeNeg = new Int64.fromInts(0x82341234, 0x0); | 252 Int64 largeNeg = new Int64.fromInts(0x82341234, 0x0); |
| 186 Int64 largePos = new Int64.fromInts(0x12341234, 0x0); | 253 Int64 largePos = new Int64.fromInts(0x12341234, 0x0); |
| 187 Int64 largePosPlusOne = largePos + new Int64(1); | 254 Int64 largePosPlusOne = largePos + new Int64(1); |
| 188 | 255 |
| 189 test("<", () { | 256 test("<", () { |
| 190 expect(new Int64(10) < new Int64(11), true); | 257 expect(new Int64(10) < new Int64(11), true); |
| 191 expect(new Int64(10) < new Int64(10), false); | 258 expect(new Int64(10) < new Int64(10), false); |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 437 expect((new Int64(-1) << 32) << 32, new Int64(0)); | 504 expect((new Int64(-1) << 32) << 32, new Int64(0)); |
| 438 expect(Int64.MIN_VALUE << 0, Int64.MIN_VALUE); | 505 expect(Int64.MIN_VALUE << 0, Int64.MIN_VALUE); |
| 439 expect(Int64.MIN_VALUE << 1, new Int64(0)); | 506 expect(Int64.MIN_VALUE << 1, new Int64(0)); |
| 440 expect((-new Int64.fromInts(8, 0)) >> 1, | 507 expect((-new Int64.fromInts(8, 0)) >> 1, |
| 441 new Int64.fromInts(0xfffffffc, 0x00000000)); | 508 new Int64.fromInts(0xfffffffc, 0x00000000)); |
| 442 expect((-new Int64.fromInts(8, 0)).shiftRightUnsigned(1), | 509 expect((-new Int64.fromInts(8, 0)).shiftRightUnsigned(1), |
| 443 new Int64.fromInts(0x7ffffffc, 0x0)); | 510 new Int64.fromInts(0x7ffffffc, 0x0)); |
| 444 }); | 511 }); |
| 445 }); | 512 }); |
| 446 | 513 |
| 447 group("type conversions", () { | 514 group("conversions", () { |
| 515 test("toSigned", () { | |
| 516 expect((Int64.ONE << 44).toSigned(46), Int64.ONE << 44); | |
| 517 expect((Int64.ONE << 44).toSigned(45), -(Int64.ONE << 44)); | |
| 518 expect((Int64.ONE << 22).toSigned(24), Int64.ONE << 22); | |
| 519 expect((Int64.ONE << 22).toSigned(23), -(Int64.ONE << 22)); | |
| 520 expect(Int64.ONE.toSigned(2), Int64.ONE); | |
| 521 expect(Int64.ONE.toSigned(1), -Int64.ONE); | |
| 522 expect(Int64.MAX_VALUE.toSigned(64), Int64.MAX_VALUE); | |
| 523 expect(Int64.MIN_VALUE.toSigned(64), Int64.MIN_VALUE); | |
| 524 expect(Int64.MAX_VALUE.toSigned(63), -Int64.ONE); | |
| 525 expect(Int64.MIN_VALUE.toSigned(63), Int64.ZERO); | |
| 526 expect(() => Int64.ONE.toSigned(0), throws); | |
| 527 expect(() => Int64.ONE.toSigned(65), throws); | |
| 528 }); | |
| 529 test("toUnsigned", () { | |
| 530 expect((Int64.ONE << 44).toUnsigned(45), Int64.ONE << 44); | |
| 531 expect((Int64.ONE << 44).toUnsigned(44), Int64.ZERO); | |
| 532 expect((Int64.ONE << 22).toUnsigned(23), Int64.ONE << 22); | |
| 533 expect((Int64.ONE << 22).toUnsigned(22), Int64.ZERO); | |
| 534 expect(Int64.ONE.toUnsigned(1), Int64.ONE); | |
| 535 expect(Int64.ONE.toUnsigned(0), Int64.ZERO); | |
| 536 expect(Int64.MAX_VALUE.toUnsigned(64), Int64.MAX_VALUE); | |
| 537 expect(Int64.MIN_VALUE.toUnsigned(64), Int64.MIN_VALUE); | |
| 538 expect(Int64.MAX_VALUE.toUnsigned(63), Int64.MAX_VALUE); | |
| 539 expect(Int64.MIN_VALUE.toUnsigned(63), Int64.ZERO); | |
| 540 expect(() => Int64.ONE.toUnsigned(-1), throws); | |
| 541 expect(() => Int64.ONE.toUnsigned(65), throws); | |
| 542 }); | |
| 543 test("toDouble", () { | |
| 544 expect(new Int64.fromInt(0).toDouble(), same(0.0)); | |
|
sra1
2013/09/24 02:58:04
fromInt is deprecated
Chris Bracken
2013/09/24 20:16:00
Done.
| |
| 545 expect(new Int64.fromInt(100).toDouble(), same(100.0)); | |
| 546 expect(new Int64.fromInt(-100).toDouble(), same(-100.0)); | |
| 547 expect(new Int64.fromInt(2147483647).toDouble(), same(2147483647.0)); | |
| 548 expect(new Int64.fromInt(2147483648).toDouble(), same(2147483648.0)); | |
| 549 expect(new Int64.fromInt(-2147483647).toDouble(), same(-2147483647.0)); | |
| 550 expect(new Int64.fromInt(-2147483648).toDouble(), same(-2147483648.0)); | |
| 551 expect(new Int64.fromInt(4503599627370495).toDouble(), | |
| 552 same(4503599627370495.0)); | |
| 553 expect(new Int64.fromInt(4503599627370496).toDouble(), | |
| 554 same(4503599627370496.0)); | |
| 555 expect(new Int64.fromInt(-4503599627370495).toDouble(), | |
| 556 same(-4503599627370495.0)); | |
| 557 expect(new Int64.fromInt(-4503599627370496).toDouble(), | |
| 558 same(-4503599627370496.0)); | |
| 559 }); | |
| 560 | |
| 448 test("toInt", () { | 561 test("toInt", () { |
| 449 expect(new Int64(0).toInt(), 0); | 562 expect(new Int64(0).toInt(), 0); |
| 450 expect(new Int64(100).toInt(), 100); | 563 expect(new Int64(100).toInt(), 100); |
| 451 expect(new Int64(-100).toInt(), -100); | 564 expect(new Int64(-100).toInt(), -100); |
| 452 expect(new Int64(2147483647).toInt(), 2147483647); | 565 expect(new Int64(2147483647).toInt(), 2147483647); |
| 453 expect(new Int64(2147483648).toInt(), 2147483648); | 566 expect(new Int64(2147483648).toInt(), 2147483648); |
| 454 expect(new Int64(-2147483647).toInt(), -2147483647); | 567 expect(new Int64(-2147483647).toInt(), -2147483647); |
| 455 expect(new Int64(-2147483648).toInt(), -2147483648); | 568 expect(new Int64(-2147483648).toInt(), -2147483648); |
| 456 expect(new Int64(4503599627370495).toInt(), 4503599627370495); | 569 expect(new Int64(4503599627370495).toInt(), 4503599627370495); |
| 457 expect(new Int64(4503599627370496).toInt(), 4503599627370496); | 570 expect(new Int64(4503599627370496).toInt(), 4503599627370496); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 595 expect(Int64.MAX_VALUE.toRadixString(10), "9223372036854775807"); | 708 expect(Int64.MAX_VALUE.toRadixString(10), "9223372036854775807"); |
| 596 expect(Int64.MAX_VALUE.toRadixString(11), "1728002635214590697"); | 709 expect(Int64.MAX_VALUE.toRadixString(11), "1728002635214590697"); |
| 597 expect(Int64.MAX_VALUE.toRadixString(12), "41a792678515120367"); | 710 expect(Int64.MAX_VALUE.toRadixString(12), "41a792678515120367"); |
| 598 expect(Int64.MAX_VALUE.toRadixString(13), "10b269549075433c37"); | 711 expect(Int64.MAX_VALUE.toRadixString(13), "10b269549075433c37"); |
| 599 expect(Int64.MAX_VALUE.toRadixString(14), "4340724c6c71dc7a7"); | 712 expect(Int64.MAX_VALUE.toRadixString(14), "4340724c6c71dc7a7"); |
| 600 expect(Int64.MAX_VALUE.toRadixString(15), "160e2ad3246366807"); | 713 expect(Int64.MAX_VALUE.toRadixString(15), "160e2ad3246366807"); |
| 601 expect(Int64.MAX_VALUE.toRadixString(16), "7fffffffffffffff"); | 714 expect(Int64.MAX_VALUE.toRadixString(16), "7fffffffffffffff"); |
| 602 }); | 715 }); |
| 603 }); | 716 }); |
| 604 } | 717 } |
| OLD | NEW |