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(17); | |
| 232 expect(val.clamp(20, 30), new Int64(20)); | |
| 233 expect(val.clamp(10, 20), new Int64(17)); | |
| 234 expect(val.clamp(10, 15), new Int64(15)); | |
| 235 | |
| 236 expect(val.clamp(new Int32(20), new Int32(30)), new Int64(20)); | |
| 237 expect(val.clamp(new Int32(10), new Int32(20)), new Int64(17)); | |
| 238 expect(val.clamp(new Int32(10), new Int32(15)), new Int64(15)); | |
| 239 | |
| 240 expect(val.clamp(new Int64(20), new Int64(30)), new Int64(20)); | |
| 241 expect(val.clamp(new Int64(10), new Int64(20)), new Int64(17)); | |
| 242 expect(val.clamp(new Int64(10), new Int64(15)), new Int64(15)); | |
| 243 expect(val.clamp(Int64.MIN_VALUE, new Int64(30)), new Int64(17)); | |
| 244 expect(val.clamp(new Int64(10), Int64.MAX_VALUE), new Int64(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(0).toDouble(), same(0.0)); | |
| 545 expect(new Int64(100).toDouble(), same(100.0)); | |
| 546 expect(new Int64(-100).toDouble(), same(-100.0)); | |
| 547 expect(new Int64(2147483647).toDouble(), same(2147483647.0)); | |
| 548 expect(new Int64(2147483648).toDouble(), same(2147483648.0)); | |
| 549 expect(new Int64(-2147483647).toDouble(), same(-2147483647.0)); | |
| 550 expect(new Int64(-2147483648).toDouble(), same(-2147483648.0)); | |
| 551 expect(new Int64(4503599627370495).toDouble(), same(4503599627370495.0)); | |
| 552 expect(new Int64(4503599627370496).toDouble(), same(4503599627370496.0)); | |
| 553 expect(new Int64(-4503599627370495).toDouble(), | |
| 554 same(-4503599627370495.0)); | |
| 555 expect(new Int64(-4503599627370496).toDouble(), | |
| 556 same(-4503599627370496.0)); | |
| 557 expect(Int64.parseInt("-10000000000000000").toDouble(), | |
| 558 same(-10000000000000000.0)); | |
| 559 expect(Int64.parseInt("-10000000000000001").toDouble(), | |
| 560 » » same(-10000000000000001.0)); | |
|
sra1
2013/09/24 21:56:34
Replace tabs with spaces
Chris Bracken
2013/09/24 23:59:37
Done.
| |
| 561 expect(Int64.parseInt("-10000000000000002").toDouble(), | |
| 562 » » same(-10000000000000002.0)); | |
|
sra1
2013/09/24 21:56:34
Please compare
Int64.parseInt("-xxxx").toDouble
Chris Bracken
2013/09/24 23:59:37
Done.
| |
| 563 expect(Int64.parseInt("-10000000000000003").toDouble(), | |
| 564 » » same(-10000000000000003.0)); | |
| 565 expect(Int64.parseInt("-10000000000000004").toDouble(), | |
| 566 » » same(-10000000000000004.0)); | |
| 567 expect(Int64.parseInt("-10000000000000005").toDouble(), | |
| 568 » » same(-10000000000000005.0)); | |
| 569 expect(Int64.parseInt("-10000000000000006").toDouble(), | |
| 570 » » same(-10000000000000006.0)); | |
| 571 expect(Int64.parseInt("-10000000000000007").toDouble(), | |
| 572 » » same(-10000000000000007.0)); | |
| 573 expect(Int64.parseInt("-10000000000000008").toDouble(), | |
| 574 » » same(-10000000000000008.0)); | |
| 575 }); | |
| 576 | |
| 448 test("toInt", () { | 577 test("toInt", () { |
| 449 expect(new Int64(0).toInt(), 0); | 578 expect(new Int64(0).toInt(), 0); |
| 450 expect(new Int64(100).toInt(), 100); | 579 expect(new Int64(100).toInt(), 100); |
| 451 expect(new Int64(-100).toInt(), -100); | 580 expect(new Int64(-100).toInt(), -100); |
| 452 expect(new Int64(2147483647).toInt(), 2147483647); | 581 expect(new Int64(2147483647).toInt(), 2147483647); |
| 453 expect(new Int64(2147483648).toInt(), 2147483648); | 582 expect(new Int64(2147483648).toInt(), 2147483648); |
| 454 expect(new Int64(-2147483647).toInt(), -2147483647); | 583 expect(new Int64(-2147483647).toInt(), -2147483647); |
| 455 expect(new Int64(-2147483648).toInt(), -2147483648); | 584 expect(new Int64(-2147483648).toInt(), -2147483648); |
| 456 expect(new Int64(4503599627370495).toInt(), 4503599627370495); | 585 expect(new Int64(4503599627370495).toInt(), 4503599627370495); |
| 457 expect(new Int64(4503599627370496).toInt(), 4503599627370496); | 586 expect(new Int64(4503599627370496).toInt(), 4503599627370496); |
| 458 expect(new Int64(-4503599627370495).toInt(), -4503599627370495); | 587 expect(new Int64(-4503599627370495).toInt(), -4503599627370495); |
| 459 expect(new Int64(-4503599627370496).toInt(), -4503599627370496); | 588 expect(new Int64(-4503599627370496).toInt(), -4503599627370496); |
| 589 expect(Int64.parseInt("-10000000000000000").toInt(), | |
| 590 same(-10000000000000000)); | |
| 591 expect(Int64.parseInt("-10000000000000001").toInt(), | |
| 592 same(-10000000000000001)); | |
| 593 expect(Int64.parseInt("-10000000000000002").toInt(), | |
| 594 same(-10000000000000002)); | |
| 595 expect(Int64.parseInt("-10000000000000003").toInt(), | |
| 596 same(-10000000000000003)); | |
| 597 expect(Int64.parseInt("-10000000000000004").toInt(), | |
| 598 same(-10000000000000004)); | |
| 599 expect(Int64.parseInt("-10000000000000005").toInt(), | |
| 600 same(-10000000000000005)); | |
| 601 expect(Int64.parseInt("-10000000000000006").toInt(), | |
| 602 same(-10000000000000006)); | |
| 603 expect(Int64.parseInt("-10000000000000007").toInt(), | |
| 604 same(-10000000000000007)); | |
| 605 expect(Int64.parseInt("-10000000000000008").toInt(), | |
| 606 same(-10000000000000008)); | |
| 460 }); | 607 }); |
| 461 | 608 |
| 462 test("toInt32", () { | 609 test("toInt32", () { |
| 463 expect(new Int64(0).toInt32(), new Int32(0)); | 610 expect(new Int64(0).toInt32(), new Int32(0)); |
| 464 expect(new Int64(1).toInt32(), new Int32(1)); | 611 expect(new Int64(1).toInt32(), new Int32(1)); |
| 465 expect(new Int64(-1).toInt32(), new Int32(-1)); | 612 expect(new Int64(-1).toInt32(), new Int32(-1)); |
| 466 expect(new Int64(2147483647).toInt32(), new Int32(2147483647)); | 613 expect(new Int64(2147483647).toInt32(), new Int32(2147483647)); |
| 467 expect(new Int64(2147483648).toInt32(), new Int32(-2147483648)); | 614 expect(new Int64(2147483648).toInt32(), new Int32(-2147483648)); |
| 468 expect(new Int64(2147483649).toInt32(), new Int32(-2147483647)); | 615 expect(new Int64(2147483649).toInt32(), new Int32(-2147483647)); |
| 469 expect(new Int64(2147483650).toInt32(), new Int32(-2147483646)); | 616 expect(new Int64(2147483650).toInt32(), new Int32(-2147483646)); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 595 expect(Int64.MAX_VALUE.toRadixString(10), "9223372036854775807"); | 742 expect(Int64.MAX_VALUE.toRadixString(10), "9223372036854775807"); |
| 596 expect(Int64.MAX_VALUE.toRadixString(11), "1728002635214590697"); | 743 expect(Int64.MAX_VALUE.toRadixString(11), "1728002635214590697"); |
| 597 expect(Int64.MAX_VALUE.toRadixString(12), "41a792678515120367"); | 744 expect(Int64.MAX_VALUE.toRadixString(12), "41a792678515120367"); |
| 598 expect(Int64.MAX_VALUE.toRadixString(13), "10b269549075433c37"); | 745 expect(Int64.MAX_VALUE.toRadixString(13), "10b269549075433c37"); |
| 599 expect(Int64.MAX_VALUE.toRadixString(14), "4340724c6c71dc7a7"); | 746 expect(Int64.MAX_VALUE.toRadixString(14), "4340724c6c71dc7a7"); |
| 600 expect(Int64.MAX_VALUE.toRadixString(15), "160e2ad3246366807"); | 747 expect(Int64.MAX_VALUE.toRadixString(15), "160e2ad3246366807"); |
| 601 expect(Int64.MAX_VALUE.toRadixString(16), "7fffffffffffffff"); | 748 expect(Int64.MAX_VALUE.toRadixString(16), "7fffffffffffffff"); |
| 602 }); | 749 }); |
| 603 }); | 750 }); |
| 604 } | 751 } |
| OLD | NEW |