| //! A collection of very old tests of basic `Box` functionality. | |
| //@ run-pass | |
| fn deref_mut() { | |
| let mut i: Box<_> = Box::new(0); | |
| *i = 1; | |
| assert_eq!(*i, 1); | |
| } | |
| // Tests for if as expressions returning boxed types | |
| fn box_if() { | |
| let rs: Box<_> = if true { Box::new(100) } else { Box::new(101) }; | |
| assert_eq!(*rs, 100); | |
| } | |
| fn cmp() { | |
| let i: Box<_> = Box::new(100); | |
| assert_eq!(i, Box::new(100)); | |
| assert!(i < Box::new(101)); | |
| assert!(i <= Box::new(100)); | |
| assert!(i > Box::new(99)); | |
| assert!(i >= Box::new(99)); | |
| } | |
| fn autoderef_field() { | |
| struct J { | |
| j: isize, | |
| } | |
| let i: Box<_> = Box::new(J { j: 100 }); | |
| assert_eq!(i.j, 100); | |
| } | |
| fn assign_copy() { | |
| let mut i: Box<_> = Box::new(1); | |
| // Should be a copy | |
| let mut j; | |
| j = i.clone(); | |
| *i = 2; | |
| *j = 3; | |
| assert_eq!(*i, 2); | |
| assert_eq!(*j, 3); | |
| } | |
| fn arg_mut() { | |
| fn f(i: &mut Box<isize>) { | |
| *i = Box::new(200); | |
| } | |
| let mut i = Box::new(100); | |
| f(&mut i); | |
| assert_eq!(*i, 200); | |
| } | |
| fn assign_generic() { | |
| fn f<T>(t: T) -> T { | |
| let t1 = t; | |
| t1 | |
| } | |
| let t = f::<Box<_>>(Box::new(100)); | |
| assert_eq!(t, Box::new(100)); | |
| } | |
| pub fn main() { | |
| deref_mut(); | |
| box_if(); | |
| cmp(); | |
| autoderef_field(); | |
| assign_copy(); | |
| arg_mut(); | |
| assign_generic(); | |
| } |