rc: fix tests
This commit is contained in:
parent
75822f2894
commit
cda3ac905a
3 changed files with 24 additions and 15 deletions
|
|
@ -21,10 +21,17 @@ Similar to a mutable option type, but friendlier.
|
|||
*/
|
||||
|
||||
#[mutable]
|
||||
#[deriving(Clone)]
|
||||
pub struct Cell<T> {
|
||||
priv value: Option<T>
|
||||
}
|
||||
|
||||
impl<T: DeepClone> DeepClone for Cell<T> {
|
||||
fn deep_clone(&self) -> Cell<T> {
|
||||
Cell{value: self.value.deep_clone()}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T:cmp::Eq> cmp::Eq for Cell<T> {
|
||||
fn eq(&self, other: &Cell<T>) -> bool {
|
||||
(self.value) == (other.value)
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ use num::Zero;
|
|||
use old_iter::{BaseIter, MutableIter, ExtendedIter};
|
||||
use old_iter;
|
||||
use str::StrSlice;
|
||||
use clone::DeepClone;
|
||||
|
||||
#[cfg(test)] use str;
|
||||
|
||||
|
|
@ -59,6 +60,15 @@ pub enum Option<T> {
|
|||
Some(T),
|
||||
}
|
||||
|
||||
impl<T: DeepClone> DeepClone for Option<T> {
|
||||
fn deep_clone(&self) -> Option<T> {
|
||||
match *self {
|
||||
Some(ref x) => Some(x.deep_clone()),
|
||||
None => None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T:Ord> Ord for Option<T> {
|
||||
fn lt(&self, other: &Option<T>) -> bool {
|
||||
match (self, other) {
|
||||
|
|
|
|||
|
|
@ -103,28 +103,20 @@ mod test_rc {
|
|||
fn test_clone() {
|
||||
let x = Rc::new(Cell(5));
|
||||
let y = x.clone();
|
||||
do x.with_borrow |cell| {
|
||||
do value.with_mut_ref |inner| {
|
||||
*inner = 20;
|
||||
}
|
||||
}
|
||||
do y.with_borrow |value| {
|
||||
assert_eq!(value.take(), 20);
|
||||
do x.borrow().with_mut_ref |inner| {
|
||||
*inner = 20;
|
||||
}
|
||||
assert_eq!(y.borrow().take(), 20);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_deep_clone() {
|
||||
let x = Rc::new(Cell(5));
|
||||
let y = x.deep_clone();
|
||||
do x.with_borrow |cell| {
|
||||
do value.with_mut_ref |inner| {
|
||||
*inner = 20;
|
||||
}
|
||||
}
|
||||
do y.with_borrow |value| {
|
||||
assert_eq!(value.take(), 5);
|
||||
do x.borrow().with_mut_ref |inner| {
|
||||
*inner = 20;
|
||||
}
|
||||
assert_eq!(y.borrow().take(), 5);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -134,7 +126,7 @@ mod test_rc {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn test_clone() {
|
||||
fn test_simple_clone() {
|
||||
let x = Rc::new(5);
|
||||
let y = x.clone();
|
||||
assert_eq!(*x.borrow(), 5);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue