about summary refs log tree commit diff
diff options
context:
space:
mode:
authorest31 <MTest31@outlook.com>2017-01-01 19:53:12 +0100
committerest31 <MTest31@outlook.com>2017-01-04 19:00:38 +0100
commit1fefa3cc91b6b2f8a0830d13d2955a9840431f31 (patch)
tree3f3b3624cc8e8915c2819096d1c9d2ef8362119a
parent9c0e373f914bba7adc85d8d2b6b7a561b6102937 (diff)
downloadrust-1fefa3cc91b6b2f8a0830d13d2955a9840431f31.tar.gz
rust-1fefa3cc91b6b2f8a0830d13d2955a9840431f31.zip
enhance u128 overflow tests
-rw-r--r--src/test/run-pass/i128.rs8
-rw-r--r--src/test/run-pass/u128.rs17
2 files changed, 23 insertions, 2 deletions
diff --git a/src/test/run-pass/i128.rs b/src/test/run-pass/i128.rs
index b7aeb21229c..a4ff36d20e4 100644
--- a/src/test/run-pass/i128.rs
+++ b/src/test/run-pass/i128.rs
@@ -96,4 +96,12 @@ fn main() {
     assert_eq!((-z).checked_mul(-z), Some(0x734C_C2F2_A521));
     assert_eq!((z).checked_mul(z), Some(0x734C_C2F2_A521));
     assert_eq!((k).checked_mul(k), None);
+    let l: i128 = b(i128::min_value());
+    let o: i128 = b(17);
+    assert_eq!(l.checked_sub(b(2)), None);
+    assert_eq!(l.checked_add(l), None);
+    assert_eq!((-(l + 1)).checked_add(2), None);
+    assert_eq!(l.checked_sub(l), Some(0));
+    assert_eq!(b(1u128).checked_shl(b(127)), Some(1 << 127));
+    assert_eq!(o.checked_shl(b(128)), None);
 }
diff --git a/src/test/run-pass/u128.rs b/src/test/run-pass/u128.rs
index d138e09318b..53d726f1f66 100644
--- a/src/test/run-pass/u128.rs
+++ b/src/test/run-pass/u128.rs
@@ -10,7 +10,10 @@
 
 // ignore-stage0
 // ignore-stage1
-#![feature(i128_type)]
+#![feature(i128_type, test)]
+
+extern crate test;
+use test::black_box as b;
 
 fn main() {
     let x: u128 = 0xFFFF_FFFF_FFFF_FFFF__FFFF_FFFF_FFFF_FFFF;
@@ -63,5 +66,15 @@ fn main() {
         format!("{}", u128::max_value()));
     assert_eq!("147573952589676412928", format!("{:?}", j));
     // common traits
-    x.clone();
+    assert_eq!(x, b(x.clone()));
+    // overflow checks
+    assert_eq!((z).checked_mul(z), Some(0x734C_C2F2_A521));
+    assert_eq!((k).checked_mul(k), None);
+    let l: u128 = b(u128::max_value() - 10);
+    let o: u128 = b(17);
+    assert_eq!(l.checked_add(b(11)), None);
+    assert_eq!(l.checked_sub(l), Some(0));
+    assert_eq!(o.checked_sub(b(18)), None);
+    assert_eq!(b(1u128).checked_shl(b(127)), Some(1 << 127));
+    assert_eq!(o.checked_shl(b(128)), None);
 }