#[macro_use] #[no_link] extern crate list_builder; use std::collections::HashSet; #[test] fn test_times_two_vec() { let actual: Vec = gen![x*2 => x in [1, 2, 3, 4]]; let expected = vec![2, 4, 6, 8]; assert_eq!(actual, expected); } #[test] fn test_no_change_vec() { let actual: Vec = gen![x => x in [1, 2, 3, 4]]; let expected = vec![1, 2, 3, 4]; assert_eq!(actual, expected); } #[test] fn test_times_two_set() { let actual: HashSet = gen![x*2 => x in [1, 2, 3, 4]]; let mut expected = HashSet::new(); expected.insert(2); expected.insert(4); expected.insert(6); expected.insert(8); assert_eq!(actual, expected); } #[test] fn test_no_change_set() { let actual: HashSet = gen![x => x in [1, 2, 3, 4]]; let mut expected = HashSet::new(); expected.insert(1); expected.insert(2); expected.insert(3); expected.insert(4); assert_eq!(actual, expected); } #[test] fn test_chained_vec() { let initial: Vec = gen![x*2 => x in [1, 2, 3, 4]]; let actual: Vec = gen![x*2 => x in initial]; let expected = vec![4, 8, 12, 16]; assert_eq!(actual, expected); } #[test] fn test_same_var_name() { let x: Vec = gen![x*2 => x in [1, 2, 3, 4]]; let actual: Vec = gen![x*2 => x in x]; let expected = vec![4, 8, 12, 16]; assert_eq!(actual, expected); } #[test] fn test_tuple_vec() { let actual: Vec<(String,i32)> = gen![(format!("{}", x),x) => x in [1, 2, 3, 4]]; let expected = vec![("1".to_string(),1),("2".to_string(),2),("3".to_string(),3),("4".to_string(),4)]; assert_eq!(actual, expected); } #[test] fn test_function_call() { fn double(x: i32) -> i32 { x * 2 } let actual: Vec = gen![double(x) => x in [1, 2, 3, 4]]; let expected = vec![2, 4, 6, 8]; assert_eq!(actual, expected); } #[test] fn test_conditional_vec() { let actual: Vec = gen![x => x in [1, 2, 3, 4], x % 2 == 0]; let expected = vec![2, 4]; assert_eq!(actual, expected); } #[test] fn test_conditional_double_vec() { let actual: Vec = gen![x*2 => x in [1, 2, 3, 4], x % 2 == 0]; let expected = vec![4, 8]; assert_eq!(actual, expected); }