Add Arc/Rc Eq tests
This commit is contained in:
parent
40d60a4608
commit
d828c22bd6
2 changed files with 84 additions and 0 deletions
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
use std::sync::{Arc, Weak};
|
use std::sync::{Arc, Weak};
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::cmp::PartialEq;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn uninhabited() {
|
fn uninhabited() {
|
||||||
|
@ -53,3 +55,43 @@ fn trait_object() {
|
||||||
b = b.clone();
|
b = b.clone();
|
||||||
assert!(b.upgrade().is_none());
|
assert!(b.upgrade().is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn float_nan_ne() {
|
||||||
|
let x = Arc::new(std::f32::NAN);
|
||||||
|
assert!(x != x);
|
||||||
|
assert!(!(x == x));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn partial_eq() {
|
||||||
|
struct TestPEq (RefCell<usize>);
|
||||||
|
impl PartialEq for TestPEq {
|
||||||
|
fn eq(&self, other: &TestPEq) -> bool {
|
||||||
|
*self.0.borrow_mut() += 1;
|
||||||
|
*other.0.borrow_mut() += 1;
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let x = Arc::new(TestPEq(RefCell::new(0)));
|
||||||
|
assert!(x == x);
|
||||||
|
assert!(!(x != x));
|
||||||
|
assert_eq!(*x.0.borrow(), 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn eq() {
|
||||||
|
#[derive(Eq)]
|
||||||
|
struct TestEq (RefCell<usize>);
|
||||||
|
impl PartialEq for TestEq {
|
||||||
|
fn eq(&self, other: &TestEq) -> bool {
|
||||||
|
*self.0.borrow_mut() += 1;
|
||||||
|
*other.0.borrow_mut() += 1;
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let x = Arc::new(TestEq(RefCell::new(0)));
|
||||||
|
assert!(x == x);
|
||||||
|
assert!(!(x != x));
|
||||||
|
assert_eq!(*x.0.borrow(), 0);
|
||||||
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
use std::rc::{Rc, Weak};
|
use std::rc::{Rc, Weak};
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::cmp::PartialEq;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn uninhabited() {
|
fn uninhabited() {
|
||||||
|
@ -53,3 +55,43 @@ fn trait_object() {
|
||||||
b = b.clone();
|
b = b.clone();
|
||||||
assert!(b.upgrade().is_none());
|
assert!(b.upgrade().is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn float_nan_ne() {
|
||||||
|
let x = Rc::new(std::f32::NAN);
|
||||||
|
assert!(x != x);
|
||||||
|
assert!(!(x == x));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn partial_eq() {
|
||||||
|
struct TestPEq (RefCell<usize>);
|
||||||
|
impl PartialEq for TestPEq {
|
||||||
|
fn eq(&self, other: &TestPEq) -> bool {
|
||||||
|
*self.0.borrow_mut() += 1;
|
||||||
|
*other.0.borrow_mut() += 1;
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let x = Rc::new(TestPEq(RefCell::new(0)));
|
||||||
|
assert!(x == x);
|
||||||
|
assert!(!(x != x));
|
||||||
|
assert_eq!(*x.0.borrow(), 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn eq() {
|
||||||
|
#[derive(Eq)]
|
||||||
|
struct TestEq (RefCell<usize>);
|
||||||
|
impl PartialEq for TestEq {
|
||||||
|
fn eq(&self, other: &TestEq) -> bool {
|
||||||
|
*self.0.borrow_mut() += 1;
|
||||||
|
*other.0.borrow_mut() += 1;
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let x = Rc::new(TestEq(RefCell::new(0)));
|
||||||
|
assert!(x == x);
|
||||||
|
assert!(!(x != x));
|
||||||
|
assert_eq!(*x.0.borrow(), 0);
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue