Guest User

Untitled

a guest
Apr 20th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. open OUnit2
  2. open Ast
  3. open Ds
  4. open Interp
  5.  
  6. (* A few test cases *)
  7. let tests = [
  8. "abs_0" >:: (fun _ -> assert_equal
  9. ~printer:string_of_expval
  10. (NumVal 0)
  11. (interp "abs(0)"));
  12.  
  13. "abs_pos" >:: (fun _ -> assert_equal
  14. ~printer:string_of_expval
  15. (NumVal 22)
  16. (interp "abs(22)"));
  17.  
  18. "abs_neg" >:: (fun _ -> assert_equal
  19. ~printer:string_of_expval
  20. (NumVal 22)
  21. (interp "abs((-22))"));
  22.  
  23. "add" >:: (fun _ -> assert_equal
  24. ~printer:string_of_expval
  25. (NumVal 22)
  26. (interp "11+11"));
  27.  
  28. "adds" >:: (fun _ -> assert_equal
  29. ~printer:string_of_expval
  30. (NumVal 22)
  31. (interp "(10+1)+(5+6)"));
  32.  
  33. "subs" >:: (fun _ -> assert_equal
  34. ~printer:string_of_expval
  35. (NumVal 20)
  36. (interp "(10-1)+(5+6)"));
  37.  
  38. "mults" >:: (fun _ -> assert_equal
  39. ~printer:string_of_expval
  40. (NumVal 21)
  41. (interp "(10*1)+(5+6)"));
  42.  
  43. "divs" >:: (fun _ -> assert_equal
  44. ~printer:string_of_expval
  45. (NumVal 16)
  46. (interp "(10/2)+(5+6)"));
  47.  
  48. "let" >:: (fun _ -> assert_equal
  49. ~printer:string_of_expval
  50. (NumVal 44)
  51. (interp "let x=22 in x+x"));
  52.  
  53. "lets" >:: (fun _ -> assert_equal
  54. ~printer:string_of_expval
  55. (NumVal 22)
  56. (interp "let x = 0 in let x = 22 in (x+x)/2"));
  57.  
  58. "emptylist" >:: (fun _ -> assert_equal
  59. ~printer:string_of_expval
  60. (ListVal [])
  61. (interp "emptylist"));
  62.  
  63. "cons_singleton" >:: (fun _ -> assert_equal
  64. ~printer:string_of_expval
  65. (ListVal [NumVal 1])
  66. (interp "cons(1, emptylist)"));
  67.  
  68. "cons_list" >:: (fun _ -> assert_equal
  69. ~printer:string_of_expval
  70. (ListVal [NumVal 3; NumVal 2; NumVal 1])
  71. (interp "cons(3, cons(2, cons(1, emptylist)))"));
  72.  
  73. "hd_singleton" >:: (fun _ -> assert_equal
  74. ~printer:string_of_expval
  75. (NumVal 1)
  76. (interp "hd(cons(1, emptylist))"));
  77.  
  78. "hd_list" >:: (fun _ -> assert_equal
  79. ~printer:string_of_expval
  80. (NumVal 3)
  81. (interp "hd(cons(3, cons(2, cons(1, emptylist))))"));
  82.  
  83. "tl_singleton" >:: (fun _ -> assert_equal
  84. ~printer:string_of_expval
  85. (ListVal [])
  86. (interp "tl(cons(1, emptylist))"));
  87.  
  88. "tl_list1" >:: (fun _ -> assert_equal
  89. ~printer:string_of_expval
  90. (ListVal [NumVal 1])
  91. (interp "tl(cons(3, cons(1, emptylist)))"));
  92.  
  93. "tl_list1" >:: (fun _ -> assert_equal
  94. ~printer:string_of_expval
  95. (ListVal [NumVal 2; NumVal 1])
  96. (interp "tl(cons(3, cons(2, cons(1, emptylist))))"));
  97.  
  98. "null_true" >:: (fun _ -> assert_equal
  99. ~printer:string_of_expval
  100. (BoolVal true)
  101. (interp "null?(tl(cons(1, emptylist)))"));
  102.  
  103. "null_false" >:: (fun _ -> assert_equal
  104. ~printer:string_of_expval
  105. (BoolVal false)
  106. (interp "null?(tl(cons(2, cons(1, emptylist))))"));
  107. ]
  108.  
  109. let _ = run_test_tt_main ("suite" >::: tests)
Add Comment
Please, Sign In to add comment