diff options
Diffstat (limited to 'chapter16/src/test/java/com/seaofnodes')
| -rw-r--r-- | chapter16/src/test/java/com/seaofnodes/simple/Chapter16Test.java | 20 |
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()); + } } |
