// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! Test for `boxed` mod. use core::any::Any; use core::ops::Deref; use core::result::Result::{Ok, Err}; use core::clone::Clone; use std::boxed::Box; use std::boxed::BoxAny; #[test] fn test_owned_clone() { let a = Box::new(5); let b: Box = a.clone(); assert!(a == b); } #[derive(PartialEq, Eq)] struct Test; #[test] fn any_move() { let a = Box::new(8u) as Box; let b = Box::new(Test) as Box; match a.downcast::() { Ok(a) => { assert!(a == Box::new(8u)); } Err(..) => panic!() } match b.downcast::() { Ok(a) => { assert!(a == Box::new(Test)); } Err(..) => panic!() } let a = Box::new(8u) as Box; let b = Box::new(Test) as Box; assert!(a.downcast::>().is_err()); assert!(b.downcast::>().is_err()); } #[test] fn test_show() { let a = Box::new(8u) as Box; let b = Box::new(Test) as Box; let a_str = format!("{:?}", a); let b_str = format!("{:?}", b); assert_eq!(a_str, "Box"); assert_eq!(b_str, "Box"); static EIGHT: usize = 8us; static TEST: Test = Test; let a = &EIGHT as &Any; let b = &TEST as &Any; let s = format!("{:?}", a); assert_eq!(s, "&Any"); let s = format!("{:?}", b); assert_eq!(s, "&Any"); } #[test] fn deref() { fn homura>(_: T) { } homura(Box::new(765i32)); }