about summary refs log tree commit diff
path: root/src/libcoretest
diff options
context:
space:
mode:
authorKeegan McAllister <kmcallister@mozilla.com>2014-10-21 12:59:21 -0700
committerKeegan McAllister <kmcallister@mozilla.com>2014-10-24 14:15:50 -0700
commit7317ef5c362bde766440f62e6c2ac8a210e6c22d (patch)
treea87e4ddec35dfd079e4870fe9a0cc74e0b3b4827 /src/libcoretest
parenta10917a6a9b087d10ac4fd0186b719218627281e (diff)
downloadrust-7317ef5c362bde766440f62e6c2ac8a210e6c22d.tar.gz
rust-7317ef5c362bde766440f62e6c2ac8a210e6c22d.zip
Add as_unsafe_cell() for Cell and RefCell
Fixes #18131.
Diffstat (limited to 'src/libcoretest')
-rw-r--r--src/libcoretest/cell.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/libcoretest/cell.rs b/src/libcoretest/cell.rs
index b3ae110363c..59365045f43 100644
--- a/src/libcoretest/cell.rs
+++ b/src/libcoretest/cell.rs
@@ -127,3 +127,22 @@ fn clone_ref_updates_flag() {
     }
     assert!(x.try_borrow_mut().is_some());
 }
+
+#[test]
+fn as_unsafe_cell() {
+    let c1: Cell<uint> = Cell::new(0u);
+    c1.set(1u);
+    assert_eq!(1u, unsafe { *c1.as_unsafe_cell().get() });
+
+    let c2: Cell<uint> = Cell::new(0u);
+    unsafe { *c2.as_unsafe_cell().get() = 1u; }
+    assert_eq!(1u, c2.get());
+
+    let r1: RefCell<uint> = RefCell::new(0u);
+    *r1.borrow_mut() = 1u;
+    assert_eq!(1u, unsafe { *r1.as_unsafe_cell().get() });
+
+    let r2: RefCell<uint> = RefCell::new(0u);
+    unsafe { *r2.as_unsafe_cell().get() = 1u; }
+    assert_eq!(1u, *r2.borrow());
+}