summaryrefslogtreecommitdiff
path: root/chapter16/src/test/java
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2024-10-19 15:17:37 -0700
committerCliff Click <cliffc@acm.org>2024-10-21 08:52:01 -0700
commit06bd4d37d2331c048829bc34e56a562fca8b8e07 (patch)
tree6505fa2ff58a1f566ce4f81af416f789a2c55a24 /chapter16/src/test/java
parentac74cbc6182d3bea00a0130edb38f026cdd5874d (diff)
downloadSimple-06bd4d37d2331c048829bc34e56a562fca8b8e07.tar.gz
Simple-06bd4d37d2331c048829bc34e56a562fca8b8e07.zip
ch 16 README
Diffstat (limited to 'chapter16/src/test/java')
-rw-r--r--chapter16/src/test/java/com/seaofnodes/simple/Chapter16Test.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/chapter16/src/test/java/com/seaofnodes/simple/Chapter16Test.java b/chapter16/src/test/java/com/seaofnodes/simple/Chapter16Test.java
index 7cd1604b..c4f9795f 100644
--- a/chapter16/src/test/java/com/seaofnodes/simple/Chapter16Test.java
+++ b/chapter16/src/test/java/com/seaofnodes/simple/Chapter16Test.java
@@ -173,4 +173,24 @@ return next.i;
assertEquals(2L, Evaluator.evaluate(stop, 11));
}
+ @Test
+ public void testSquare() {
+ Parser parser = new Parser(
+"""
+struct Square {
+ flt !side = arg;
+ flt diag = arg*arg/2;
+ while( 1 ) {
+ flt next = (side/diag + diag)/2;
+ if( next == diag ) break;
+ diag = next;
+ }
+};
+return new Square;
+""");
+ StopNode stop = parser.parse().iterate();
+ assertEquals("return Square;", stop.toString());
+ assertEquals("Obj<Square>{side=3.0,diag=1.7320508075688772}", Evaluator.evaluate(stop, 3).toString());
+ assertEquals("Obj<Square>{side=4.0,diag=2.0}", Evaluator.evaluate(stop, 4).toString());
+ }
}