@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 = 200)
 public void testEmptyBasic() {
   assertNull(list.first());
   assertNull(list.last());
   assertNull(list.get(1));
   assertNull(list.remove(1));
   assertEquals(
       "Empty set not being returned for an empty list", list.dataSet(), new HashSet<Integer>());
 }
 @Test(timeout = 200)
 public void testDataSet() {
   Set<Integer> expected = new TreeSet<Integer>();
   for (int i = 0; i < 11; i++) {
     expected.add(i);
   }
   addJagged();
   Set<Integer> dataSet = list.dataSet();
   assertEquals("Incorrect elements in the data set", expected, dataSet);
 }
 @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)
 public void testEmptySet() {
   assertEquals(0, list.dataSet().size());
 }