Move more tests using Cell to unit tests

This commit is contained in:
Alexis Bourget 2020-09-08 00:10:35 +02:00
parent 8aae1eee94
commit f69c5aa428
2 changed files with 31 additions and 32 deletions

View File

@ -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);
}

View File

@ -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);
}