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}