# HG changeset patch # User Andreas Woess # Date 1449769187 -3600 # Node ID bc3303fb38889f4a2921bd3dc579abb6145cc5f2 # Parent a73f1d7a5a3e2d8782487db9a6b3f54676906185 add more FrameDescriptor tests diff -r a73f1d7a5a3e -r bc3303fb3888 truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/FrameDescriptorTest.java --- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/FrameDescriptorTest.java Thu Dec 10 18:18:32 2015 +0100 +++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/FrameDescriptorTest.java Thu Dec 10 18:39:47 2015 +0100 @@ -23,8 +23,12 @@ package com.oracle.truffle.api; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; -import org.junit.Assert; import org.junit.Test; import com.oracle.truffle.api.frame.Frame; @@ -67,7 +71,7 @@ @Test public void nullDefaultValue() { - Assert.assertNull(new FrameDescriptor().getDefaultValue()); + assertNull(new FrameDescriptor().getDefaultValue()); } @Test @@ -114,4 +118,68 @@ assertEquals("Kind is changed", firstCopy.getKind(), FrameSlotKind.Int); assertEquals("Kind is changed in original too!", first.getKind(), FrameSlotKind.Int); } + + @Test + public void version() { + FrameDescriptor d = new FrameDescriptor(); + s1 = d.addFrameSlot("v1", "i1", FrameSlotKind.Boolean); + s2 = d.addFrameSlot("v2", "i2", FrameSlotKind.Float); + + Assumption version; + version = d.getVersion(); + assertTrue(version.isValid()); + // add slot + s3 = d.addFrameSlot("v3", "i3", FrameSlotKind.Int); + assertEquals(3, d.getSize()); + assertFalse(version.isValid()); + version = d.getVersion(); + assertTrue(version.isValid()); + assertSame("1st slot", s1, d.getSlots().get(0)); + assertSame("2nd slot", s2, d.getSlots().get(1)); + assertSame("3rd slot", s3, d.getSlots().get(2)); + + // change kind + s3.setKind(FrameSlotKind.Object); + assertFalse(version.isValid()); + version = d.getVersion(); + assertTrue(version.isValid()); + + // remove slot + d.removeFrameSlot("v3"); + assertEquals(2, d.getSize()); + assertFalse(version.isValid()); + version = d.getVersion(); + assertTrue(version.isValid()); + } + + @Test + public void notInFrameAssumption() { + FrameDescriptor d = new FrameDescriptor(); + Assumption[] ass = new Assumption[]{d.getNotInFrameAssumption("v1"), d.getNotInFrameAssumption("v2"), d.getNotInFrameAssumption("v3")}; + assertTrue(ass[0].isValid()); + assertTrue(ass[1].isValid()); + assertTrue(ass[2].isValid()); + s1 = d.addFrameSlot("v1", "i1", FrameSlotKind.Boolean); + assertFalse(ass[0].isValid()); + assertTrue(ass[1].isValid()); + assertTrue(ass[2].isValid()); + s2 = d.addFrameSlot("v2", "i2", FrameSlotKind.Float); + assertFalse(ass[0].isValid()); + assertFalse(ass[1].isValid()); + assertTrue(ass[2].isValid()); + s3 = d.addFrameSlot("v3", "i3", FrameSlotKind.Int); + assertFalse(ass[0].isValid()); + assertFalse(ass[1].isValid()); + assertFalse(ass[2].isValid()); + + for (String identifier : new String[]{"v1", "v2", "v3"}) { + try { + d.getNotInFrameAssumption(identifier); + fail("expected IllegalArgumentException"); + } catch (IllegalArgumentException e) { + // expected + } + } + d.getNotInFrameAssumption("v4"); + } }