diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustuv/idle.rs | 2 | ||||
| -rw-r--r-- | src/libstd/option.rs | 2 | ||||
| -rw-r--r-- | src/libstd/rc.rs | 43 |
3 files changed, 44 insertions, 3 deletions
diff --git a/src/librustuv/idle.rs b/src/librustuv/idle.rs index 80d21404e4b..3d6e81d0d6f 100644 --- a/src/librustuv/idle.rs +++ b/src/librustuv/idle.rs @@ -127,7 +127,7 @@ mod test { } fn mk(v: uint) -> (~IdleWatcher, Chan) { - let rc = Rc::from_send(RefCell::new((None, 0))); + let rc = Rc::new(RefCell::new((None, 0))); let cb = ~MyCallback(rc.clone(), v); let cb = cb as ~Callback:; let cb = unsafe { cast::transmute(cb) }; diff --git a/src/libstd/option.rs b/src/libstd/option.rs index f49244a3607..7ce9873c2da 100644 --- a/src/libstd/option.rs +++ b/src/libstd/option.rs @@ -509,7 +509,7 @@ mod tests { } } - let i = Rc::from_send(RefCell::new(0)); + let i = Rc::new(RefCell::new(0)); { let x = R(i.clone()); let opt = Some(x); diff --git a/src/libstd/rc.rs b/src/libstd/rc.rs index a5b909008bf..9947d8822ae 100644 --- a/src/libstd/rc.rs +++ b/src/libstd/rc.rs @@ -172,8 +172,49 @@ impl<T> Clone for Weak<T> { #[cfg(test)] mod tests { + use prelude::*; use super::*; - use prelude::drop; + use cell::RefCell; + + #[test] + fn test_clone() { + let x = Rc::new(RefCell::new(5)); + let y = x.clone(); + x.borrow().with_mut(|inner| { + *inner = 20; + }); + assert_eq!(y.borrow().with(|v| *v), 20); + } + + #[test] + fn test_deep_clone() { + let x = Rc::new(RefCell::new(5)); + let y = x.deep_clone(); + x.borrow().with_mut(|inner| { + *inner = 20; + }); + assert_eq!(y.borrow().with(|v| *v), 5); + } + + #[test] + fn test_simple() { + let x = Rc::new(5); + assert_eq!(*x.borrow(), 5); + } + + #[test] + fn test_simple_clone() { + let x = Rc::new(5); + let y = x.clone(); + assert_eq!(*x.borrow(), 5); + assert_eq!(*y.borrow(), 5); + } + + #[test] + fn test_destructor() { + let x = Rc::new(~5); + assert_eq!(**x.borrow(), 5); + } #[test] fn test_live() { |
