#![no_std] use higher_order_functions::Map; #[cfg(feature = "std")] #[macro_use] extern crate std; #[cfg(all(not(feature = "std"), feature = "alloc"))] #[macro_use] extern crate alloc; #[cfg(all(not(feature = "std"), feature = "alloc"))] use alloc::collections::LinkedList; #[test] fn map_empty_array() { let arr = [].map(|_: ()| panic!("Shouldn't call map function")); assert_eq!(arr, []); } #[test] fn map_singleton_array() { let mut called = false; let arr = [321].map(|x| { assert_eq!(x, 321); if called { panic!("Should only call map function once"); } else { called = true; } 123 }); assert!(called); assert_eq!(arr, [123]); } #[test] fn double_array() { let arr = [1, 4, 6, -3, 6].map(|x| x * 2); assert_eq!(arr, [2, 8, 12, -6, 12]); } #[test] fn cast_array() { let arr = [1, 4, 6, -3, 6].map(f64::from); assert_eq!(arr, [1.0, 4.0, 6.0, -3.0, 6.0]); } #[test] fn map_2d_array() { let arr = [[1, 2, 3], [4, 5, 6]].map(|a| a.map(|x| x * 2)); assert_eq!(arr, [[2, 4, 6], [8, 10, 12]]); } #[cfg(any(feature = "std", feature = "alloc"))] #[test] fn map_empty_vec() { let vec = vec![].map(|_: ()| panic!("Shouldn't call map function")); assert_eq!(vec, vec![]); } #[cfg(any(feature = "std", feature = "alloc"))] #[test] fn map_singleton_vec() { let mut called = false; let vec = vec![321].map(|x| { assert_eq!(x, 321); if called { panic!("Should only call map function once"); } else { called = true; } 123 }); assert!(called); assert_eq!(vec, vec![123]); } #[cfg(any(feature = "std", feature = "alloc"))] #[test] fn double_vec() { let vec = vec![1, 4, 6, -3, 6].map(|x| x * 2); assert_eq!(vec, vec![2, 8, 12, -6, 12]); } #[cfg(any(feature = "std", feature = "alloc"))] #[test] fn cast_vec() { let vec = vec![1, 4, 6, -3, 6].map(f64::from); assert_eq!(vec, vec![1.0, 4.0, 6.0, -3.0, 6.0]); }