1.1 --- a/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/LongArithmeticTest.java Fri Jan 25 11:00:52 2013 +0100
1.2 +++ b/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/LongArithmeticTest.java Thu Feb 07 16:11:53 2013 +0100
1.3 @@ -47,19 +47,34 @@
1.4 return (x % y);
1.5 }
1.6
1.7 + private static long neg(long x) {
1.8 + return -x;
1.9 + }
1.10 +
1.11 @Compare public long conversion() {
1.12 return Long.MAX_VALUE;
1.13 }
1.14
1.15 - /*
1.16 + @Compare public long negate1() {
1.17 + return neg(0x00fa37d7763e0ca1l);
1.18 + }
1.19 +
1.20 + @Compare public long negate2() {
1.21 + return neg(0x80fa37d7763e0ca1l);
1.22 + }
1.23 +
1.24 + @Compare public long negate3() {
1.25 + return neg(0xfffffffffffffeddl);
1.26 + }
1.27 +
1.28 @Compare public long addOverflow() {
1.29 return add(Long.MAX_VALUE, 1l);
1.30 }
1.31 -
1.32 +
1.33 @Compare public long subUnderflow() {
1.34 return sub(Long.MIN_VALUE, 1l);
1.35 }
1.36 -
1.37 +
1.38 @Compare public long addMaxLongAndMaxLong() {
1.39 return add(Long.MAX_VALUE, Long.MAX_VALUE);
1.40 }
1.41 @@ -68,6 +83,10 @@
1.42 return sub(Long.MIN_VALUE, Long.MIN_VALUE);
1.43 }
1.44
1.45 + @Compare public long subMinLongAndMaxLong() {
1.46 + return sub(Long.MIN_VALUE, Long.MAX_VALUE);
1.47 + }
1.48 +
1.49 @Compare public long multiplyMaxLong() {
1.50 return mul(Long.MAX_VALUE, 2l);
1.51 }
1.52 @@ -85,17 +104,96 @@
1.53 }
1.54
1.55 @Compare public long multiplyPrecision() {
1.56 - return mul(17638l, 1103l);
1.57 + return mul(0x00fa37d7763e0ca1l, 0xa7b3432fff00123el);
1.58 }
1.59
1.60 - @Compare public long division() {
1.61 - return div(1l, 2l);
1.62 + @Compare public long divideSmallPositiveNumbers() {
1.63 + return div(0xabcdef, 0x123);
1.64 }
1.65 -
1.66 - @Compare public long divisionReminder() {
1.67 - return mod(1l, 2l);
1.68 +
1.69 + @Compare public long divideSmallNegativeNumbers() {
1.70 + return div(-0xabcdef, -0x123);
1.71 }
1.72 - */
1.73 +
1.74 + @Compare public long divideSmallMixedNumbers() {
1.75 + return div(0xabcdef, -0x123);
1.76 + }
1.77 +
1.78 + @Compare public long dividePositiveNumbersOneDigitDenom() {
1.79 + return div(0xabcdef0102ffffl, 0x654);
1.80 + }
1.81 +
1.82 + @Compare public long divideNegativeNumbersOneDigitDenom() {
1.83 + return div(-0xabcdef0102ffffl, -0x654);
1.84 + }
1.85 +
1.86 + @Compare public long divideMixedNumbersOneDigitDenom() {
1.87 + return div(-0xabcdef0102ffffl, 0x654);
1.88 + }
1.89 +
1.90 + @Compare public long dividePositiveNumbersMultiDigitDenom() {
1.91 + return div(0x7ffefc003322aabbl, 0x89ab1000l);
1.92 + }
1.93 +
1.94 + @Compare public long divideNegativeNumbersMultiDigitDenom() {
1.95 + return div(-0x7ffefc003322aabbl, -0x123489ab1001l);
1.96 + }
1.97 +
1.98 + @Compare public long divideMixedNumbersMultiDigitDenom() {
1.99 + return div(0x7ffefc003322aabbl, -0x38f49b0b7574e36l);
1.100 + }
1.101 +
1.102 + @Compare public long divideWithOverflow() {
1.103 + return div(0x8000fffe0000l, 0x8000ffffl);
1.104 + }
1.105 +
1.106 + @Compare public long divideWithCorrection() {
1.107 + return div(0x7fff800000000000l, 0x800000000001l);
1.108 + }
1.109 +
1.110 + @Compare public long moduloSmallPositiveNumbers() {
1.111 + return mod(0xabcdef, 0x123);
1.112 + }
1.113 +
1.114 + @Compare public long moduloSmallNegativeNumbers() {
1.115 + return mod(-0xabcdef, -0x123);
1.116 + }
1.117 +
1.118 + @Compare public long moduloSmallMixedNumbers() {
1.119 + return mod(0xabcdef, -0x123);
1.120 + }
1.121 +
1.122 + @Compare public long moduloPositiveNumbersOneDigitDenom() {
1.123 + return mod(0xabcdef0102ffffl, 0x654);
1.124 + }
1.125 +
1.126 + @Compare public long moduloNegativeNumbersOneDigitDenom() {
1.127 + return mod(-0xabcdef0102ffffl, -0x654);
1.128 + }
1.129 +
1.130 + @Compare public long moduloMixedNumbersOneDigitDenom() {
1.131 + return mod(-0xabcdef0102ffffl, 0x654);
1.132 + }
1.133 +
1.134 + @Compare public long moduloPositiveNumbersMultiDigitDenom() {
1.135 + return mod(0x7ffefc003322aabbl, 0x89ab1000l);
1.136 + }
1.137 +
1.138 + @Compare public long moduloNegativeNumbersMultiDigitDenom() {
1.139 + return mod(-0x7ffefc003322aabbl, -0x123489ab1001l);
1.140 + }
1.141 +
1.142 + @Compare public long moduloMixedNumbersMultiDigitDenom() {
1.143 + return mod(0x7ffefc003322aabbl, -0x38f49b0b7574e36l);
1.144 + }
1.145 +
1.146 + @Compare public long moduloWithOverflow() {
1.147 + return mod(0x8000fffe0000l, 0x8000ffffl);
1.148 + }
1.149 +
1.150 + @Compare public long moduloWithCorrection() {
1.151 + return mod(0x7fff800000000000l, 0x800000000001l);
1.152 + }
1.153
1.154 @Factory
1.155 public static Object[] create() {