001package daikon.test.inv.unary.scalar; 002 003import static java.util.logging.Level.INFO; 004import static org.junit.Assert.assertFalse; 005import static org.junit.Assert.assertTrue; 006 007import daikon.FileIO; 008import daikon.PptSlice; 009import daikon.PptSlice1; 010import daikon.PptTopLevel; 011import daikon.ProglangType; 012import daikon.VarComparabilityNone; 013import daikon.VarInfo; 014import daikon.VarInfoAux; 015import daikon.inv.unary.scalar.OneOfScalar; 016import daikon.test.Common; 017import junit.framework.*; 018import org.checkerframework.checker.nullness.qual.NonNull; 019import org.junit.BeforeClass; 020import org.junit.Test; 021 022@SuppressWarnings("nullness") // testing code 023public class OneOfScalarTester { 024 025 private VarInfo[] vars = {Common.makeHashcodeVarInfo("x"), Common.newIntVarInfo("y")}; 026 private PptTopLevel ppt = Common.makePptTopLevel("Foo.Baa(int):::ENTER", vars); 027 private PptSlice slicex = new PptSlice1(ppt, new VarInfo[] {vars[0]}); 028 // private PptSlice slicey = new PptSlice1(ppt, new VarInfo[] {vars[1]}); 029 030 private static final int DOESNT_MATTER = 0; 031 032 /** prepare for tests */ 033 @BeforeClass 034 public static void setUpClass() { 035 daikon.LogHelper.setupLogs(INFO); 036 FileIO.new_decl_format = true; 037 } 038 039 @SuppressWarnings("interning") 040 public static VarInfo newIntVarInfo(String name) { 041 VarInfo result = 042 new VarInfo( 043 name, 044 ProglangType.INT, 045 ProglangType.INT, 046 VarComparabilityNone.it, 047 VarInfoAux.getDefault()); 048 return result; 049 } 050 051 @SuppressWarnings("interning") 052 public static VarInfo newHashcodeVarInfo(String name) { 053 VarInfo result = 054 new VarInfo( 055 name, 056 ProglangType.HASHCODE, 057 ProglangType.HASHCODE, 058 VarComparabilityNone.it, 059 VarInfoAux.getDefault()); 060 return result; 061 } 062 063 @Test 064 public void testNullNon() { 065 @NonNull OneOfScalar inv1 = (OneOfScalar) OneOfScalar.get_proto().instantiate(slicex); 066 @NonNull OneOfScalar inv2 = (OneOfScalar) OneOfScalar.get_proto().instantiate(slicex); 067 068 inv1.add_modified(19, DOESNT_MATTER); 069 inv2.add_modified(0, DOESNT_MATTER); 070 071 assertFalse(inv1.isSameFormula(inv2)); 072 } 073 074 @Test 075 public void testNullNull() { 076 @NonNull OneOfScalar inv1 = (OneOfScalar) OneOfScalar.get_proto().instantiate(slicex); 077 @NonNull OneOfScalar inv2 = (OneOfScalar) OneOfScalar.get_proto().instantiate(slicex); 078 079 inv1.add_modified(0, DOESNT_MATTER); 080 inv2.add_modified(0, DOESNT_MATTER); 081 082 assertTrue(inv1.isSameFormula(inv2)); 083 } 084 085 @Test 086 public void testNonNon() { 087 @NonNull OneOfScalar inv1 = (OneOfScalar) OneOfScalar.get_proto().instantiate(slicex); 088 @NonNull OneOfScalar inv2 = (OneOfScalar) OneOfScalar.get_proto().instantiate(slicex); 089 090 inv1.add_modified(19, DOESNT_MATTER); 091 inv2.add_modified(22, DOESNT_MATTER); 092 093 assertTrue(inv1.isSameFormula(inv2)); 094 } 095 096 /* NEED TO DEFINE SEMANTICS WITH MIKE E 097 @Test 098 public void testNullNonHashcodeInt() { 099 OneOfScalar inv1 = OneOfScalar.get_proto().instantiate(slicex); 100 OneOfScalar inv2 = OneOfScalar.get_proto().instantiate(slicey); 101 102 inv1.add_modified(0, DOESNT_MATTER); 103 inv2.add_modified(22, DOESNT_MATTER); 104 105 assertFalse( inv1.isSameFormula(inv2)); 106 } 107 108 @Test 109 public void testNullNullHashcodeInt() { 110 OneOfScalar inv1 = OneOfScalar.get_proto().instantiate(slicex); 111 OneOfScalar inv2 = OneOfScalar.get_proto().instantiate(slicey); 112 113 inv1.add_modified(0, DOESNT_MATTER); 114 inv2.add_modified(0, DOESNT_MATTER); 115 116 assertTrue(inv1.isSameFormula(inv2)); 117 } 118 119 @Test 120 public void testNonNonHashcodeInt() { 121 OneOfScalar inv1 = OneOfScalar.get_proto().instantiate(slicex); 122 OneOfScalar inv2 = OneOfScalar.get_proto().instantiate(slicey); 123 124 inv1.add_modified(19, DOESNT_MATTER); 125 inv2.add_modified(22, DOESNT_MATTER); 126 127 assertTrue(inv1.isSameFormula(inv2)); 128 } 129 */ 130}