示例#1
0
    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))
示例#2
0
    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))