@Test(timeout = 200)
  public void testContains() {
    addBasic();
    for (int i = 0; i < 11; i++) {
      assertTrue("List should contain " + i, list.contains(i));
    }

    for (int i = 11; i < 20; i++) {
      assertFalse("List should not contain " + i, list.contains(i));
    }
  }
 @Test(timeout = 1000)
 public void stressTesting_Add() {
   Random r = new Random(System.currentTimeMillis());
   Set<Integer> set = new HashSet<>();
   for (int i = 0; i < 10000; i++) {
     Integer num = r.nextInt();
     set.add(num);
     if (!list.contains(num)) {
       list.put(num);
     }
   }
   assertEquals("Adding not working properly", set, list.dataSet());
   assertEquals("Size isn't being incremented correctly", set.size(), list.dataSet().size());
 }
 @Test(timeout = 10000)
 public void stressTesting_String() {
   Random r = new Random(98);
   Set<String> set = new HashSet<>();
   for (int i = 0; i < 50; i++) {
     String str = Character.toString((char) (r.nextInt(90) + 33));
     if (r.nextBoolean()) {
       set.add(str);
       if (!listString.contains(str)) {
         listString.put(str);
       }
     } else {
       set.remove(str);
       listString.remove(str);
     }
   }
   assertEquals("Check your remove method", set, listString.dataSet());
   assertEquals("Size isn't being decremented correctly", set.size(), listString.dataSet().size());
 }
 @Test(timeout = 1000)
 public void stressTesting_AddAndRemove() {
   Random r = new Random(System.currentTimeMillis());
   Set<Integer> set = new HashSet<>();
   for (int i = 0; i < 1000; i++) {
     Integer num = r.nextInt();
     if (r.nextBoolean()) {
       set.add(num);
       if (!list.contains(num)) {
         list.put(num);
       }
     } else {
       set.remove(num);
       list.remove(num);
     }
   }
   assertEquals("Check your remove method", set, list.dataSet());
   assertEquals("Size isn't being decremented correctly", set.size(), list.dataSet().size());
 }
 @Test(timeout = 1000)
 public void stressTesting_LevelPromoting() {
   int quantity = 10000;
   Random r = new Random(System.currentTimeMillis());
   Set<Integer> set = new HashSet<>();
   for (int i = 0; i < quantity; i++) {
     Integer num = r.nextInt();
     set.add(num);
     if (!list.contains(num)) {
       list.put(num);
     }
   }
   Random rand = new Random(10);
   int flips = 0;
   for (int i = 0; i < quantity; i++) {
     while (rand.nextBoolean()) {
       flips++;
     }
     flips++;
   }
   assertEquals("Adding is not working properly", set, list.dataSet());
   assertEquals("CoinFlipper is not being used properly", flips, randomness.getNumFlips());
 }
 @Test(timeout = 1000, expected = IllegalArgumentException.class)
 public void testIllegalContains() {
   list.contains(null);
 }
 @Test(timeout = 1000)
 public void testNullContains() {
   assertEquals(false, list.contains(1));
 }