changeset 22492:bc3303fb3888

add more FrameDescriptor tests
author Andreas Woess <andreas.woess@oracle.com>
date Thu, 10 Dec 2015 18:39:47 +0100
parents a73f1d7a5a3e
children 1cb72700c10e
files truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/FrameDescriptorTest.java
diffstat 1 files changed, 70 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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");
+    }
 }