001package daikon.test.diff; 002 003import static java.util.logging.Level.INFO; 004import static org.junit.Assert.assertFalse; 005import static org.junit.Assert.assertSame; 006 007import daikon.*; 008import daikon.diff.*; 009import daikon.inv.Invariant; 010import java.util.ArrayList; 011import java.util.Iterator; 012import java.util.List; 013import junit.framework.*; 014import org.checkerframework.checker.nullness.qual.MonotonicNonNull; 015import org.checkerframework.checker.nullness.qual.RequiresNonNull; 016import org.junit.Before; 017import org.junit.BeforeClass; 018import org.junit.Test; 019 020public class InvMapTester { 021 022 private @MonotonicNonNull InvMap map; // initialized by setUp() 023 private PptTopLevel pptA = new PptTopLevel("A:::OBJECT", new VarInfo[0]); 024 private PptTopLevel pptB = new PptTopLevel("A:::OBJECT", new VarInfo[0]); 025 private PptTopLevel pptC = new PptTopLevel("A:::OBJECT", new VarInfo[0]); 026 private List<Invariant> invsA = new ArrayList<>(); 027 private List<Invariant> invsB = new ArrayList<>(); 028 private List<Invariant> invsC = new ArrayList<>(); 029 030 /** prepare for tests */ 031 @BeforeClass 032 public static void setUpClass() { 033 daikon.LogHelper.setupLogs(INFO); 034 FileIO.new_decl_format = true; 035 } 036 037 @Before 038 public void setUp() { 039 map = new InvMap(); 040 } 041 042 @RequiresNonNull("map") 043 // implicit flow: setUp was called by JUnit"; 044 @Test 045 public void testABC() { 046 map.put(pptA, invsA); 047 map.put(pptB, invsB); 048 map.put(pptC, invsC); 049 050 // Test the keys 051 Iterator<PptTopLevel> i = map.pptIterator(); 052 assertSame(i.next(), pptA); 053 assertSame(i.next(), pptB); 054 assertSame(i.next(), pptC); 055 assertFalse(i.hasNext()); 056 057 // Test the values 058 assertSame(map.get(pptA), invsA); 059 assertSame(map.get(pptB), invsB); 060 assertSame(map.get(pptC), invsC); 061 } 062 063 @RequiresNonNull("map") 064 // implicit flow: setUp was called by JUnit"; 065 @Test 066 public void testCAB() { 067 map.put(pptC, invsC); 068 map.put(pptA, invsA); 069 map.put(pptB, invsB); 070 071 // Test the keys 072 Iterator<PptTopLevel> i = map.pptIterator(); 073 assertSame(i.next(), pptC); 074 assertSame(i.next(), pptA); 075 assertSame(i.next(), pptB); 076 assertFalse(i.hasNext()); 077 078 // Test the values 079 assertSame(map.get(pptA), invsA); 080 assertSame(map.get(pptB), invsB); 081 assertSame(map.get(pptC), invsC); 082 } 083}