about summary refs log tree commit diff
path: root/users/tazjin/rlox/src/bytecode/tests.rs
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-02-28T13·57+0200
committertazjin <mail@tazj.in>2021-02-28T14·36+0000
commitc58fe2093e2a2870fc76ea55aa2de8e5aa6dab7d (patch)
tree74dfeeb43fb7936cc09d92b14ea017c46b5dfccb /users/tazjin/rlox/src/bytecode/tests.rs
parent93c30b339c4904e86ac6046bd2a67c0d872a6a3b (diff)
feat(tazjin/rlox): Implement equality operator r/2255
Change-Id: I5587a11646e228c5af4dc7ca6da026bb4a2592a6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2574
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
Diffstat (limited to 'users/tazjin/rlox/src/bytecode/tests.rs')
-rw-r--r--users/tazjin/rlox/src/bytecode/tests.rs31
1 files changed, 26 insertions, 5 deletions
diff --git a/users/tazjin/rlox/src/bytecode/tests.rs b/users/tazjin/rlox/src/bytecode/tests.rs
index d02f021ff0fd..500779301b04 100644
--- a/users/tazjin/rlox/src/bytecode/tests.rs
+++ b/users/tazjin/rlox/src/bytecode/tests.rs
@@ -14,6 +14,10 @@ fn expect_num(code: &str, value: f64) {
     expect(code, Value::Number(value))
 }
 
+fn expect_bool(code: &str, value: bool) {
+    expect(code, Value::Bool(value))
+}
+
 #[test]
 fn numbers() {
     expect_num("1", 1.0);
@@ -61,9 +65,26 @@ fn trivial_literals() {
 
 #[test]
 fn negation() {
-    expect("!true", Value::Bool(false));
-    expect("!false", Value::Bool(true));
-    expect("!nil", Value::Bool(true));
-    expect("!13.5", Value::Bool(false));
-    expect("!-42", Value::Bool(false));
+    expect_bool("!true", false);
+    expect_bool("!false", true);
+    expect_bool("!nil", true);
+    expect_bool("!13.5", false);
+    expect_bool("!-42", false);
+}
+
+#[test]
+fn equality() {
+    expect_bool("42 == 42", true);
+    expect_bool("42 != 42", false);
+    expect_bool("42 == 42.0", true);
+
+    expect_bool("true == true", true);
+    expect_bool("true == false", false);
+    expect_bool("true == !false", true);
+    expect_bool("true != true", false);
+    expect_bool("true != false", true);
+
+    expect_bool("42 == false", false);
+    expect_bool("42 == true", false);
+    expect_bool("!42 == !true", true);
 }