diff options
| author | Cliff Click <cliffc@acm.org> | 2024-08-05 13:52:54 -0700 |
|---|---|---|
| committer | Dibyendu Majumdar <dibyendumajumdar@users.noreply.github.com> | 2024-08-06 00:50:58 +0100 |
| commit | e29c22656458e9252ca0fc32a396d605496b4b4d (patch) | |
| tree | 30007cb51ba01bfcded2aab2807b6cb237ce0905 /chapter13/src/test | |
| parent | 9bc99b3987f1daea61c329b9327814d9a9148ebe (diff) | |
| download | Simple-e29c22656458e9252ca0fc32a396d605496b4b4d.tar.gz Simple-e29c22656458e9252ca0fc32a396d605496b4b4d.zip | |
More error cases, error checking
disallow e.g. "struct x { int i; }; x = new x; x.i=3.14;"
Diffstat (limited to 'chapter13/src/test')
| -rw-r--r-- | chapter13/src/test/java/com/seaofnodes/simple/Chapter12Test.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/chapter13/src/test/java/com/seaofnodes/simple/Chapter12Test.java b/chapter13/src/test/java/com/seaofnodes/simple/Chapter12Test.java index e36c7577..8eceb0fa 100644 --- a/chapter13/src/test/java/com/seaofnodes/simple/Chapter12Test.java +++ b/chapter13/src/test/java/com/seaofnodes/simple/Chapter12Test.java @@ -121,4 +121,54 @@ return f0.i.f.i.i; assertEquals("return 17;", stop.toString()); } + @Test + public void testNullRef0() { + Parser parser = new Parser( +""" +struct N { N next; int i; } +N n = new N; +return n.next; +"""); + StopNode stop = parser.parse(false).iterate(false); + assertEquals("return null;", stop.toString()); + } + + @Test + public void testNullRef1() { + Parser parser = new Parser( +""" +struct N { N next; int i; } +N n = new N; +n.next = new N; +return n.next; +"""); + StopNode stop = parser.parse(false).iterate(false); + assertEquals("return new N;", stop.toString()); + } + + @Test + public void testNullRef2() { + Parser parser = new Parser( +""" +struct N { N next; int i; } +N n = new N; +n.next = null; +return n.next; +"""); + try { parser.parse(true).iterate(true); fail(); } + catch( Exception e ) { assertEquals("Cannot store null into field *N next",e.getMessage()); } + } + + @Test + public void testNullRef3() { + Parser parser = new Parser( +""" +struct N { N next; int i; } +N n = new N; +n.i = 3.14; +return n.i; +"""); + try { parser.parse(true).iterate(true); fail(); } + catch( Exception e ) { assertEquals("Cannot store 3.14 into field IntBot i",e.getMessage()); } + } } |
