Move more tests using Cell to unit tests
This commit is contained in:
parent
8aae1eee94
commit
f69c5aa428
2 changed files with 31 additions and 32 deletions
|
@ -372,3 +372,34 @@ fn option_const() {
|
|||
const IS_NONE: bool = OPTION.is_none();
|
||||
assert!(!IS_NONE);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_unwrap_drop() {
|
||||
use std::cell::Cell;
|
||||
|
||||
struct Dtor<'a> {
|
||||
x: &'a Cell<isize>,
|
||||
}
|
||||
|
||||
impl<'a> std::ops::Drop for Dtor<'a> {
|
||||
fn drop(&mut self) {
|
||||
self.x.set(self.x.get() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
fn unwrap<T>(o: Option<T>) -> T {
|
||||
match o {
|
||||
Some(v) => v,
|
||||
None => panic!(),
|
||||
}
|
||||
}
|
||||
|
||||
let x = &Cell::new(1);
|
||||
|
||||
{
|
||||
let b = Some(Dtor { x });
|
||||
let _c = unwrap(b);
|
||||
}
|
||||
|
||||
assert_eq!(x.get(), 0);
|
||||
}
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
// run-pass
|
||||
|
||||
#![allow(non_camel_case_types)]
|
||||
use std::cell::Cell;
|
||||
|
||||
struct dtor<'a> {
|
||||
x: &'a Cell<isize>,
|
||||
}
|
||||
|
||||
impl<'a> Drop for dtor<'a> {
|
||||
fn drop(&mut self) {
|
||||
self.x.set(self.x.get() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
fn unwrap<T>(o: Option<T>) -> T {
|
||||
match o {
|
||||
Some(v) => v,
|
||||
None => panic!()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn main() {
|
||||
let x = &Cell::new(1);
|
||||
|
||||
{
|
||||
let b = Some(dtor { x:x });
|
||||
let _c = unwrap(b);
|
||||
}
|
||||
|
||||
assert_eq!(x.get(), 0);
|
||||
}
|
Loading…
Add table
Reference in a new issue