asclass TestUnorderedSet { new HashSet a; Set b; abstract Set makeSet(); int n = 1000, valueRange = 100; O makeEntry() { ret random(valueRange); } bool remove = true; O randomNonContainedEntry() { ret random(valueRange+1, valueRange*2); } S moreInfo(Set b) { ret ""; } void printStats { print(joinNemptiesWithSlash(n2(b), moreInfo()) + " - " + takeFirst(10, b.iterator()); print("Size HashSet: " + n2(deepObjectSize(a)) + ", size CompactHashSet: " + n2(deepObjectSize(b))); } run { printStats(); repeat n { addToTwoCollections(a, b, makeEntry()); if (remove) removeFromTwoCollections(a, b, makeEntry()); assertTrue(areSetsEqual(a, b)); repeat 5 { assertFalse(b.contains(randomNonContainedEntry())); } printStats(); } } }