about summary refs log tree commit diff stats
path: root/shell/eval.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-03-05 09:02:56 -0800
committerKartik K. Agaram <vc@akkartik.com>2021-03-05 09:02:56 -0800
commitd3b508b16c4114d05ee93d352e9a1af3c9c9b033 (patch)
tree5030557a5893f97728fb3893a11b786f44fa0426 /shell/eval.mu
parent2454f72c8a5db58059fae079913d11138ac09230 (diff)
downloadmu-d3b508b16c4114d05ee93d352e9a1af3c9c9b033.tar.gz
7855
Diffstat (limited to 'shell/eval.mu')
-rw-r--r--shell/eval.mu23
1 files changed, 20 insertions, 3 deletions
diff --git a/shell/eval.mu b/shell/eval.mu
index ff7a8e4f..4cbd923e 100644
--- a/shell/eval.mu
+++ b/shell/eval.mu
@@ -307,7 +307,24 @@ fn test-evaluate-is-well-behaved {
   check-trace-contains t, "error", "unbound symbol: a", "F - test-evaluate-is-well-behaved"
 }
 
-fn test-evaluate {
+fn test-evaluate-number {
+  var tmp-storage: (handle cell)
+  var tmp-ah/edx: (addr handle cell) <- address tmp-storage
+  # eval 3, nil env
+  allocate-pair tmp-ah
+  var env/eax: (addr cell) <- lookup *tmp-ah
+  new-integer tmp-ah, 3
+  evaluate tmp-ah, tmp-ah, env, 0/no-trace
+  #
+  var result/eax: (addr cell) <- lookup *tmp-ah
+  var result-type/edx: (addr int) <- get result, type
+  check-ints-equal *result-type, 1/number, "F - test-evaluate-number/0"
+  var result-value-addr/eax: (addr float) <- get result, number-data
+  var result-value/eax: int <- convert *result-value-addr
+  check-ints-equal result-value, 3, "F - test-evaluate-number/1"
+}
+
+fn test-evaluate-symbol {
   # tmp = (a . 3)
   var val-storage: (handle cell)
   var val-ah/ecx: (addr handle cell) <- address val-storage
@@ -329,8 +346,8 @@ fn test-evaluate {
   evaluate tmp-ah, tmp-ah, env, 0/no-trace
   var result/eax: (addr cell) <- lookup *tmp-ah
   var result-type/edx: (addr int) <- get result, type
-  check-ints-equal *result-type, 1/number, "F - test-evaluate/0"
+  check-ints-equal *result-type, 1/number, "F - test-evaluate-symbol/0"
   var result-value-addr/eax: (addr float) <- get result, number-data
   var result-value/eax: int <- convert *result-value-addr
-  check-ints-equal result-value, 3, "F - test-evaluate/1"
+  check-ints-equal result-value, 3, "F - test-evaluate-symbol/1"
 }