def testXor(self): ks = KeyedSet(firstLetter, ["apple", "avocado", "banana", "cheese"]) ks2 = KeyedSet(firstLetter, ["apple", "acacia", "banana", "durian"]) result = ks ^ ks2 self.assertEqual(result, set(["acacia", "avocado", "cheese", "durian"])) # No side-effects self.assertEqual(ks, set(["apple", "avocado", "banana", "cheese"])) self.assertEqual(ks2, set(["apple", "acacia", "banana", "durian"])) # Proper key sets self.assertEqual(result.keys(), ["a", "c", "d"]) self.assertEqual(result.subset_by_key("a"), set(["acacia", "avocado"])) self.assertEqual(result.subset_by_key("b"), set()) self.assertEqual(result.subset_by_key("c"), set(["cheese"])) self.assertEqual(result.subset_by_key("d"), set(["durian"])) # _update copy = ks.copy() copy ^= ks2 # No unintended side-effects self.assertEqual(ks2, set(["apple", "acacia", "banana", "durian"])) self.assertEqual(result, copy) self.assertEqual(sorted(result.keys()), sorted(copy.keys())) for key in result.keys(): self.assertEqual(result.subset_by_key(key), copy.subset_by_key(key))
def testDifference(self): ks = KeyedSet(firstLetter, ["apple", "avocado", "banana"]) ks2 = KeyedSet(firstLetter, ["apple", "acacia"]) more = ["banana", "cheese"] result = ks.difference(ks2, more) self.assertEqual(result, set(["avocado"])) # No side-effects self.assertEqual(ks, set(["apple", "avocado", "banana"])) self.assertEqual(ks2, set(["apple", "acacia"])) self.assertEqual(more, ["banana", "cheese"]) # Proper key sets self.assertEqual(result.keys(), ["a"]) self.assertEqual(result.subset_by_key("a"), set(["avocado"])) self.assertEqual(result.subset_by_key("b"), set()) self.assertEqual(result.subset_by_key("c"), set()) # _update copy = ks.copy() copy.difference_update(ks2, more) # No unintended side-effects self.assertEqual(ks2, set(["apple", "acacia"])) self.assertEqual(more, ["banana", "cheese"]) self.assertEqual(result, copy) self.assertEqual(sorted(result.keys()), sorted(copy.keys())) for key in result.keys(): self.assertEqual(result.subset_by_key(key), copy.subset_by_key(key))
def testSymmetricDifference(self): ks = KeyedSet(firstLetter, ["apple", "avocado", "banana", "cheese"]) other = ["apple", "acacia", "banana", "durian"] result = ks.symmetric_difference(other) self.assertEqual(result, set(["acacia", "avocado", "cheese", "durian"])) # No side-effects self.assertEqual(ks, set(["apple", "avocado", "banana", "cheese"])) self.assertEqual(other, ["apple", "acacia", "banana", "durian"]) # Proper key sets self.assertEqual(result.keys(), ["a", "c", "d"]) self.assertEqual(result.subset_by_key("a"), set(["acacia", "avocado"])) self.assertEqual(result.subset_by_key("b"), set()) self.assertEqual(result.subset_by_key("c"), set(["cheese"])) self.assertEqual(result.subset_by_key("d"), set(["durian"])) # _update copy = ks.copy() copy.symmetric_difference_update(other) # No unintended side-effects self.assertEqual(other, ["apple", "acacia", "banana", "durian"]) self.assertEqual(result, copy) self.assertEqual(sorted(result.keys()), sorted(copy.keys())) for key in result.keys(): self.assertEqual(result.subset_by_key(key), copy.subset_by_key(key))
def testXor(self): ks = KeyedSet(firstLetter, ["apple", "avocado", "banana", "cheese"]) ks2 = KeyedSet(firstLetter, ["apple", "acacia", "banana", "durian"]) result = ks ^ ks2 self.assertEqual(result, set(["acacia", "avocado", "cheese", "durian"])) # No side-effects self.assertEqual(ks, set(["apple", "avocado", "banana", "cheese"])) self.assertEqual(ks2, set(["apple", "acacia", "banana", "durian"])) # Proper key sets self.assertEqual(result.keys(), ['a', 'c', 'd']) self.assertEqual(result.subset_by_key("a"), set(["acacia", "avocado"])) self.assertEqual(result.subset_by_key("b"), set()) self.assertEqual(result.subset_by_key("c"), set(["cheese"])) self.assertEqual(result.subset_by_key("d"), set(["durian"])) # _update copy = ks.copy() copy ^= ks2 # No unintended side-effects self.assertEqual(ks2, set(["apple", "acacia", "banana", "durian"])) self.assertEqual(result, copy) self.assertEqual(sorted(result.keys()), sorted(copy.keys())) for key in result.keys(): self.assertEqual(result.subset_by_key(key), copy.subset_by_key(key))
def testSymmetricDifference(self): ks = KeyedSet(firstLetter, ["apple", "avocado", "banana", "cheese"]) other = ["apple", "acacia", "banana", "durian"] result = ks.symmetric_difference(other) self.assertEqual(result, set(["acacia", "avocado", "cheese", "durian"])) # No side-effects self.assertEqual(ks, set(["apple", "avocado", "banana", "cheese"])) self.assertEqual(other, ["apple", "acacia", "banana", "durian"]) # Proper key sets self.assertEqual(result.keys(), ['a', 'c', 'd']) self.assertEqual(result.subset_by_key("a"), set(["acacia", "avocado"])) self.assertEqual(result.subset_by_key("b"), set()) self.assertEqual(result.subset_by_key("c"), set(["cheese"])) self.assertEqual(result.subset_by_key("d"), set(["durian"])) # _update copy = ks.copy() copy.symmetric_difference_update(other) # No unintended side-effects self.assertEqual(other, ["apple", "acacia", "banana", "durian"]) self.assertEqual(result, copy) self.assertEqual(sorted(result.keys()), sorted(copy.keys())) for key in result.keys(): self.assertEqual(result.subset_by_key(key), copy.subset_by_key(key))
def testDifference(self): ks = KeyedSet(firstLetter, ["apple", "avocado", "banana"]) ks2 = KeyedSet(firstLetter, ["apple", "acacia"]) more = ["banana", "cheese"] result = ks.difference(ks2, more) self.assertEqual(result, set(["avocado"])) # No side-effects self.assertEqual(ks, set(["apple", "avocado", "banana"])) self.assertEqual(ks2, set(["apple", "acacia"])) self.assertEqual(more, ["banana", "cheese"]) # Proper key sets self.assertEqual(result.keys(), ['a']) self.assertEqual(result.subset_by_key("a"), set(["avocado"])) self.assertEqual(result.subset_by_key("b"), set()) self.assertEqual(result.subset_by_key("c"), set()) # _update copy = ks.copy() copy.difference_update(ks2, more) # No unintended side-effects self.assertEqual(ks2, set(["apple", "acacia"])) self.assertEqual(more, ["banana", "cheese"]) self.assertEqual(result, copy) self.assertEqual(sorted(result.keys()), sorted(copy.keys())) for key in result.keys(): self.assertEqual(result.subset_by_key(key), copy.subset_by_key(key))
def testCopy(self): ks = KeyedSet(firstLetter, ["apple", "avocado", "banana"]) ks2 = ks.copy() self.assertEqual(sorted(ks), ["apple", "avocado", "banana"]) self.assertEqual(sorted(ks2), ["apple", "avocado", "banana"]) self.assertEqual(sorted(ks.keys()), ["a", "b"]) self.assertEqual(sorted(ks2.keys()), ["a", "b"]) ks2.add("acacia") ks2.add("cheese") ks2.remove("banana") self.assertEqual(sorted(ks), ["apple", "avocado", "banana"]) self.assertEqual(sorted(ks2), ["acacia", "apple", "avocado", "cheese"]) self.assertEqual(sorted(ks.keys()), ["a", "b"]) self.assertEqual(sorted(ks2.keys()), ["a", "c"]) self.assertEqual(ks2.subset_by_key("a"), set(["acacia", "apple", "avocado"])) self.assertEqual(ks2.subset_by_key("b"), set()) self.assertEqual(ks2.subset_by_key("c"), set(["cheese"]))