diff options
| author | Cliff Click <cliffc@acm.org> | 2026-09-26 16:02:24 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-09-26 16:02:24 -0700 |
| commit | 4391fcc03a214e6296e19ca42487de023ab12f6a (patch) | |
| tree | 7eca88e0bea31cdae4d5f485b84604a41c82f795 /chapter24/src/test/java | |
| parent | dd907c2d86eaaad0910e7bfe3f0d25e5caf8bdf7 (diff) | |
| download | Simple-4391fcc03a214e6296e19ca42487de023ab12f6a.tar.gz Simple-4391fcc03a214e6296e19ca42487de023ab12f6a.zip | |
bug fix widen
Failed lattice law tests mixing constants and have wide type ints; or mixing wide ints and constant arrays.
Diffstat (limited to 'chapter24/src/test/java')
| -rw-r--r-- | chapter24/src/test/java/com/seaofnodes/simple/TypeTest.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/chapter24/src/test/java/com/seaofnodes/simple/TypeTest.java b/chapter24/src/test/java/com/seaofnodes/simple/TypeTest.java index 40264d1d..ba7d2a1e 100644 --- a/chapter24/src/test/java/com/seaofnodes/simple/TypeTest.java +++ b/chapter24/src/test/java/com/seaofnodes/simple/TypeTest.java @@ -7,6 +7,22 @@ import static org.junit.Assert.assertSame; public class TypeTest { + // Removing zero must not reset the widening history of a remaining range. + @Test public void testNonZeroWidening() { + for( byte widen=0; widen<=3; widen++ ) { + TypeInteger pos = TypeInteger.make(0,255,widen).nonZero(); + TypeInteger neg = TypeInteger.make(-255,0,widen).nonZero(); + Assert.assertEquals("positive range widening",widen,pos._widen); + Assert.assertEquals("negative range widening",widen,neg._widen); + assertSame(TypeInteger.make(1,255,widen),pos); + assertSame(TypeInteger.make(-255,-1,widen),neg); + // Singleton ranges retain their widening level too. + assertSame(TypeInteger.make(1,1,widen),TypeInteger.make(0,1,widen).nonZero()); + assertSame(TypeInteger.make(-1,-1,widen),TypeInteger.make(-1,0,widen).nonZero()); + } + Assert.assertNull(TypeInteger.ZERO.nonZero()); + } + // Struct hashes omit field types, so interning compares unlike leaf kinds. @Test public void testCyclicLeafKinds() { |
