svoid test_TreeSetWithDuplicates() { TreeSetWithDuplicates set = new(comparatorFromCalculatedField l()); set.addAll(ll("hello", "world", "bla", "very long")); assertEqualsOneOfVerbose(asList(set), ll("bla", "hello", "world", "very long"), ll("bla", "world", "hello", "very long")); assertEqualsVerbose(4, set.size()); // test all cases of size update set.remove("x"); // remove element not in set assertEqualsVerbose(4, set.size()); set.remove("bla"); // remove element without duplicates assertEqualsVerbose(3, set.size()); set.remove("hello"); // remove element with a remaining duplicate assertEqualsVerbose(2, set.size()); set.add("world"); // add existing element assertEqualsVerbose(2, set.size()); set.add("old"); // add new element assertEqualsVerbose(3, set.size()); set.add("new"); // add new element with existing duplicate assertEqualsVerbose(4, set.size()); test_TreeSetWithDuplicates_2(); } // test that elements with same probability are returned in // insertion order svoid test_TreeSetWithDuplicates_2() { TreeSetWithDuplicates set = new(comparatorFromCalculatedField l()); LS l = ll("abc", "xyz", "def", "ppp", "aaa"); set.addAll(l); assertEqualsVerbose(l, asList(set)); }