From 162558e68e0f8c83ad42a2c1bc676ae0eef2464c Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Fri, 4 Oct 2024 14:18:47 -0700 Subject: Force arrays to have a safety check Improves BrainFuck --- .../java/com/seaofnodes/simple/BrainFuckTest.java | 4 ++-- .../java/com/seaofnodes/simple/Chapter15Test.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'chapter15/src/test/java/com') diff --git a/chapter15/src/test/java/com/seaofnodes/simple/BrainFuckTest.java b/chapter15/src/test/java/com/seaofnodes/simple/BrainFuckTest.java index 894abbf6..03a22c55 100644 --- a/chapter15/src/test/java/com/seaofnodes/simple/BrainFuckTest.java +++ b/chapter15/src/test/java/com/seaofnodes/simple/BrainFuckTest.java @@ -26,7 +26,7 @@ public class BrainFuckTest { encoded + """ int pc = 0; int d = 0; -u8[] data = new u8[10000]; +u8[] data = new u8[100]; int i=0; while(i < data#) { data[i] = 0; @@ -92,6 +92,6 @@ return result; for (byte b : "Hello Wo".getBytes(StandardCharsets.UTF_8)) { expected = (expected << 8) | b; } - assertEquals(expected, Evaluator.evaluate(stop, 0, 100000)); + assertEquals(expected, Evaluator.evaluate(stop, 0, 10000)); } } diff --git a/chapter15/src/test/java/com/seaofnodes/simple/Chapter15Test.java b/chapter15/src/test/java/com/seaofnodes/simple/Chapter15Test.java index 1aee2f0d..266d8a47 100644 --- a/chapter15/src/test/java/com/seaofnodes/simple/Chapter15Test.java +++ b/chapter15/src/test/java/com/seaofnodes/simple/Chapter15Test.java @@ -23,6 +23,25 @@ return 3.14; assertEquals(3.14, Evaluator.evaluate(stop, 0)); } + @Test + public void testSafetyCheck() { + Parser parser = new Parser( +""" +u8[] old = new u8[0]; +u8[] output = new u8[1]; +int i = 0; +while (i < old#) { + output[i] = old[i]; + i = i + 1; +} +output[i] = 1; +return output; +"""); + StopNode stop = parser.parse(false).iterate(true); + assertEquals("return u8[];", stop.toString()); + assertEquals("Obj {\n #=1\n []=1\n}", Evaluator.evaluate(stop, 0).toString()); + } + @Test public void testBasic1() { Parser parser = new Parser( -- cgit v1.2.3