/* Copyright (c) 2006, Sriram Srinivasan * * You may distribute this software under the terms of the license * specified in the file "License" */ package kilim.test; import kilim.analysis.Value; import junit.framework.TestCase; import static kilim.Constants.*; public class TestValue extends TestCase { public void testSameSiteMerge() { Value v = Value.make(10, D_STRING); v = v.merge(Value.make(20, D_OBJECT)); Value oldV = v; for (int i = 0; i < 10; i++) { v = v.merge(Value.make(10, D_STRING)); } assertSame(oldV, v); } public void testDifferentSitesMerge() { Value v1 = Value.make(2, D_INT); Value v2 = Value.make(3, D_INT); Value v3 = Value.make(5, D_INT); Value v = v1.merge(v2); v = v.merge(v3); assertTrue(v.getNumSites() == 3); int[] sites = v.getCreationSites(); int prod = 1; for (int i = 0; i < 3; i++) { prod *= sites[i]; } assertTrue(prod == 30); Value oldV = v; // Ensure order of merges don't matter v = v3.merge(v2); v = v.merge(v1); assertEquals(v, oldV); } public void testTypeMerge() { Value v1 = Value.make(2, "Lkilim/test/ex/ExC;"); Value v2 = Value.make(3, "Lkilim/test/ex/ExD;"); Value v3 = Value.make(5, "Lkilim/test/ex/ExA;"); Value v = v1.merge(v1); assertSame(v, v1); v = v1.merge(v2); assertEquals("Lkilim/test/ex/ExA;", v.getTypeDesc()); v = v3.merge(v2); assertEquals("Lkilim/test/ex/ExA;", v.getTypeDesc()); Value v4 = Value.make(7, D_INT);; v = v3.merge(v4); assertSame(D_UNDEFINED, v.getTypeDesc()); } public void testConstMerge() { Value v1 = Value.make(99, D_STRING, "String1"); Value v2 = Value.make(100, D_STRING, new String("String1")); // create a new String Value v= v1.merge(v2); assertTrue(v.getConstVal().equals("String1")); v = v1.merge(Value.make(101, D_STRING, "Some other string")); assertTrue(v.getConstVal().equals(Value.NO_VAL)); } }