tests.rs (1282B)
1 use super::*; 2 3 fn make_program(contents: &str) -> Program { 4 Program::from_string(contents.to_string()) 5 } 6 #[test] 7 fn test_math() { 8 assert_eq!(eval::do_math("2-2".to_string(), '+'), 4); 9 } 10 #[test] 11 #[should_panic] 12 fn test_undefined_opcode() { 13 make_program("Hello\nWorld!").run(); 14 } 15 #[test] 16 #[should_panic] 17 fn test_undefined_variable() { 18 make_program("p$v").run(); 19 } 20 #[test] 21 #[should_panic] 22 fn test_undefined_function() { 23 make_program("p*x").run(); 24 } 25 #[test] 26 fn test_factory() { 27 let prog = make_program("lhHello\nlwWorld\np$h $w"); 28 let vec_to_check: Vec<String> = vec!["lhHello", "lwWorld", "p$h $w"].into_iter().map(|s| s.to_string()).collect(); 29 assert_eq!(prog.data, vec_to_check); 30 } 31 #[test] 32 fn test_args() { 33 let mut prog = make_program("lhHello\nlwWorld\np$h $w"); 34 prog.run(); 35 let args_to_check: HashMap<char, String> = [('h', String::from("Hello")), ('w', String::from("World"))].iter().cloned().collect(); 36 assert_eq!(prog.vars, args_to_check); 37 } 38 39 #[test] 40 fn test_funcs() { 41 let mut prog = make_program("fxa10-10\nfys10-5\np*x *y"); 42 prog.run(); 43 let funcs_to_check: HashMap<char, String> = [('x', String::from("a10-10")), ('y', String::from("s10-5"))].iter().cloned().collect(); 44 assert_eq!(prog.funcs, funcs_to_check); 45 }