From eccda096c2e8e30f76e4c4a21421243159cd9026 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Sat, 7 Sep 2024 09:22:29 -0700 Subject: README includes more design decisions for type names. Add Or,Xor for completeness. --- .../src/test/java/com/seaofnodes/simple/Chapter14Test.java | 11 +++++++++++ .../test/java/com/seaofnodes/simple/evaluator/Evaluator.java | 2 ++ 2 files changed, 13 insertions(+) (limited to 'chapter14/src/test/java/com/seaofnodes') diff --git a/chapter14/src/test/java/com/seaofnodes/simple/Chapter14Test.java b/chapter14/src/test/java/com/seaofnodes/simple/Chapter14Test.java index 962b8e4d..5f7cf954 100644 --- a/chapter14/src/test/java/com/seaofnodes/simple/Chapter14Test.java +++ b/chapter14/src/test/java/com/seaofnodes/simple/Chapter14Test.java @@ -141,6 +141,17 @@ return c; // assertEquals(52501L, Evaluator.evaluate(stop, 0)); } + @Test + public void testOr() { + Parser parser = new Parser( +""" +return (arg | 123 ^ 456) >>> 1; +"""); + StopNode stop = parser.parse(false).iterate(false); + assertEquals("return (((arg|123)^456)>>>1);", stop.toString()); + assertEquals(217L, Evaluator.evaluate(stop, 0)); + } + @Test public void testMaskFloat() { Parser parser = new Parser( diff --git a/chapter14/src/test/java/com/seaofnodes/simple/evaluator/Evaluator.java b/chapter14/src/test/java/com/seaofnodes/simple/evaluator/Evaluator.java index 67e9deac..31a14c05 100644 --- a/chapter14/src/test/java/com/seaofnodes/simple/evaluator/Evaluator.java +++ b/chapter14/src/test/java/com/seaofnodes/simple/evaluator/Evaluator.java @@ -154,6 +154,8 @@ public class Evaluator { case ShrNode shr -> vall(shr.in(1)) >>> vall(shr.in(2)); case SarNode sar -> vall(sar.in(1)) >> vall(sar.in(2)); case AndNode and -> vall(and.in(1)) & vall(and.in(2)); + case OrNode or -> vall(or .in(1)) | vall(or .in(2)); + case XorNode xor -> vall(xor.in(1)) ^ vall(xor.in(2)); case CastNode cast -> val(cast.in(1)); case ToFloatNode cast -> (double)vall(cast.in(1)); case LoadNode load -> load(load); -- cgit v1.2.3