sandwich

A funny programming language written in Rust
git clone https://tilde.team/~karx/sandwich.git
Log | Files | Refs | README | LICENSE

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 }