示例#1
0
    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))
示例#2
0
    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))
示例#3
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))
示例#4
0
    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))
示例#5
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))
示例#6
0
    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))
示例#7
0
 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"]))
示例#8
0
 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"]))