001package daikon.test.diff; 002 003import static java.util.logging.Level.INFO; 004import static org.junit.Assert.assertEquals; 005import static org.junit.Assert.assertTrue; 006 007import daikon.*; 008import daikon.diff.*; 009import daikon.inv.*; 010import daikon.inv.unary.scalar.*; 011import daikon.test.*; 012import java.util.Comparator; 013import junit.framework.*; 014import org.junit.BeforeClass; 015import org.junit.Test; 016 017/** Daikon unit test class. */ 018@SuppressWarnings("nullness") // testing code 019public class ConsequentCVFSortComparatorTester { 020 021 /** prepare for tests */ 022 @BeforeClass 023 public static void setUpClass() { 024 daikon.LogHelper.setupLogs(INFO); 025 FileIO.new_decl_format = true; 026 } 027 028 @Test 029 public void testCompare() { 030 VarInfo[] vars = { 031 DiffTester.newIntVarInfo("a"), 032 DiffTester.newIntVarInfo("b"), 033 DiffTester.newIntVarInfo("c"), 034 DiffTester.newIntVarInfo("d"), 035 }; 036 PptTopLevel P = Common.makePptTopLevel("P:::OBJECT", vars); 037 PptSlice slicea = new PptSlice1(P, new VarInfo[] {vars[0]}); 038 PptSlice sliceb = new PptSlice1(P, new VarInfo[] {vars[1]}); 039 PptSlice slicec = new PptSlice1(P, new VarInfo[] {vars[2]}); 040 PptSlice sliced = new PptSlice1(P, new VarInfo[] {vars[3]}); 041 Invariant A = NonZero.get_proto().instantiate(slicea); 042 Invariant B = NonZero.get_proto().instantiate(sliceb); 043 Invariant C = NonZero.get_proto().instantiate(slicec); 044 Invariant D = NonZero.get_proto().instantiate(sliced); 045 Invariant A_B = Implication.makeImplication(P, A, B, false, A, B); 046 Invariant A_C = Implication.makeImplication(P, A, C, false, A, C); 047 Invariant B_C = Implication.makeImplication(P, B, C, false, B, C); 048 049 Comparator<Invariant> c = new ConsequentCVFSortComparator(); 050 051 assertEquals(0, c.compare(A, A)); 052 assertTrue(c.compare(A, B) < 0); 053 assertTrue(c.compare(A, C) < 0); 054 assertTrue(c.compare(A, D) < 0); 055 assertTrue(c.compare(A, A_B) < 0); 056 assertTrue(c.compare(A, A_C) < 0); 057 assertTrue(c.compare(A, B_C) < 0); 058 059 assertEquals(0, c.compare(B, B)); 060 assertTrue(c.compare(B, C) < 0); 061 assertTrue(c.compare(B, D) < 0); 062 assertEquals(0, c.compare(B, A_B)); 063 assertTrue(c.compare(B, A_C) < 0); 064 assertTrue(c.compare(B, B_C) < 0); 065 066 assertEquals(0, c.compare(C, C)); 067 assertTrue(c.compare(C, D) < 0); 068 assertTrue(c.compare(C, A_B) > 0); 069 assertEquals(0, c.compare(C, A_C)); 070 assertEquals(0, c.compare(C, B_C)); 071 072 assertEquals(0, c.compare(D, D)); 073 assertTrue(c.compare(D, A_B) > 0); 074 assertTrue(c.compare(D, A_C) > 0); 075 assertTrue(c.compare(D, B_C) > 0); 076 077 assertEquals(0, c.compare(A_B, A_B)); 078 assertTrue(c.compare(A_B, A_C) < 0); 079 assertTrue(c.compare(A_B, B_C) < 0); 080 081 assertEquals(0, c.compare(A_C, A_C)); 082 assertTrue(c.compare(A_C, B_C) < 0); 083 084 assertEquals(0, c.compare(B_C, B_C)); 085 } 086}