chiark / gitweb /
tests
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 18 Jul 2020 21:27:09 +0000 (22:27 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 18 Jul 2020 21:27:09 +0000 (22:27 +0100)
src/slotmap-slot-idx.rs

index 146d80c0961b1ce6c0856fcb5335e94380de90e3..9f39adc330f9e97cd4ffce0620cbefcf91fb77f1 100644 (file)
@@ -208,9 +208,21 @@ impl fmt::Display for Error {
 
 #[test]
 fn check(){
-  let v : u64 = 0x123456789abcdef;
-  let kd = slotmap::KeyData::from_ffi(v);
-  let (idx,vsn) = self::KeyDataExt::get_idx_version(kd);
-  assert_eq!(idx as u64, v & 0xffffffff);
-  assert_eq!(vsn as u64, v >> 32);
+  fn t(v: u64) {
+    let kd = slotmap::KeyData::from_ffi(v);
+    let v = kd.as_ffi(); // KeyData is not transparent for all u64
+    let (idx,vsn) = self::KeyDataExt::get_idx_version(kd);
+    eprintln!("KeyData={:?} v=0x{:x?} idx={}=0x{:x} vsn={}=0x{:x}",
+              &kd, &v, idx,idx, vsn,vsn);
+    assert_eq!(v, ((vsn as u64) << 32) | (idx as u64));
+  }
+  t(0x0123456789abcdef);
+  t(0xfedcba9876543210);
+  t(0);
+  t(0xffffffff12345678);
+  t(0x12345678ffffffff);
+  t(0xffffffff00000000);
+  t(0x00000000ffffffff);
+  t(0x0000000012345678);
+  t(0x1234567800000000);
 }