Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: pkg/fixnum/test/int_64_test.dart

Issue 24388004: Added bitLength, clamp(), toDouble(), toSigned(), toUnsigned(). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Review fixes. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/fixnum/test/int_32_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/fixnum/test/int_32_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698