示例#1
0
    def testIntersection(self):
        ks = KeyedSet(firstLetter, ["apple", "avocado", "banana"])
        ks2 = KeyedSet(firstLetter, ["apple", "acacia", "banana", "cheese"])
        more = ["apple", "cheese", "durian"]
        result = ks.intersection(ks2, more)
        self.assertEqual(result, set(["apple"]))

        # No side-effects
        self.assertEqual(ks, set(["apple", "avocado", "banana"]))
        self.assertEqual(ks2, set(["apple", "acacia", "banana", "cheese"]))
        self.assertEqual(more, ["apple", "cheese", "durian"])

        # Proper key sets
        self.assertEqual(sorted(result.keys()), ["a"])
        self.assertEqual(result.subset_by_key("a"), set(["apple"]))
        self.assertEqual(result.subset_by_key("b"), set())
        self.assertEqual(result.subset_by_key("c"), set())
        self.assertEqual(result.subset_by_key("d"), set())

        # _update
        copy = ks.copy()
        copy.intersection_update(ks2, more)

        # No unintended side-effects
        self.assertEqual(ks2, set(["apple", "acacia", "banana", "cheese"]))
        self.assertEqual(more, ["apple", "cheese", "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 testIntersection(self):
        ks = KeyedSet(firstLetter, ["apple", "avocado", "banana"])
        ks2 = KeyedSet(firstLetter, ["apple", "acacia", "banana", "cheese"])
        more = ["apple", "cheese", "durian"]
        result = ks.intersection(ks2, more)
        self.assertEqual(result, set(["apple"]))

        # No side-effects
        self.assertEqual(ks, set(["apple", "avocado", "banana"]))
        self.assertEqual(ks2, set(["apple", "acacia", "banana", "cheese"]))
        self.assertEqual(more, ['apple', 'cheese', 'durian'])

        # Proper key sets
        self.assertEqual(sorted(result.keys()), ['a'])
        self.assertEqual(result.subset_by_key("a"), set(["apple"]))
        self.assertEqual(result.subset_by_key("b"), set())
        self.assertEqual(result.subset_by_key("c"), set())
        self.assertEqual(result.subset_by_key("d"), set())

        # _update
        copy = ks.copy()
        copy.intersection_update(ks2, more)

        # No unintended side-effects
        self.assertEqual(ks2, set(["apple", "acacia", "banana", "cheese"]))
        self.assertEqual(more, ['apple', 'cheese', '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))