⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_sets.py

📁 mallet是自然语言处理、机器学习领域的一个开源项目。
💻 PY
📖 第 1 页 / 共 2 页
字号:
#!/usr/bin/env pythonfrom __future__ import generatorsimport unittest, operator, copy, picklefrom sets import Set, ImmutableSetfrom test import test_supportempty_set = Set()#==============================================================================class TestBasicOps(unittest.TestCase):    def test_repr(self):        if self.repr is not None:            self.assertEqual(`self.set`, self.repr)    def test_length(self):        self.assertEqual(len(self.set), self.length)    def test_self_equality(self):        self.assertEqual(self.set, self.set)    def test_equivalent_equality(self):        self.assertEqual(self.set, self.dup)    def test_copy(self):        self.assertEqual(self.set.copy(), self.dup)    def test_self_union(self):        result = self.set | self.set        self.assertEqual(result, self.dup)    def test_empty_union(self):        result = self.set | empty_set        self.assertEqual(result, self.dup)    def test_union_empty(self):        result = empty_set | self.set        self.assertEqual(result, self.dup)    def test_self_intersection(self):        result = self.set & self.set        self.assertEqual(result, self.dup)    def test_empty_intersection(self):        result = self.set & empty_set        self.assertEqual(result, empty_set)    def test_intersection_empty(self):        result = empty_set & self.set        self.assertEqual(result, empty_set)    def test_self_symmetric_difference(self):        result = self.set ^ self.set        self.assertEqual(result, empty_set)    def checkempty_symmetric_difference(self):        result = self.set ^ empty_set        self.assertEqual(result, self.set)    def test_self_difference(self):        result = self.set - self.set        self.assertEqual(result, empty_set)    def test_empty_difference(self):        result = self.set - empty_set        self.assertEqual(result, self.dup)    def test_empty_difference_rev(self):        result = empty_set - self.set        self.assertEqual(result, empty_set)    def test_iteration(self):        for v in self.set:            self.assert_(v in self.values)    def _test_pickling(self):        p = pickle.dumps(self.set)        copy = pickle.loads(p)        self.assertEqual(self.set, copy,                         "%s != %s" % (self.set, copy))#------------------------------------------------------------------------------class TestBasicOpsEmpty(TestBasicOps):    def setUp(self):        self.case   = "empty set"        self.values = []        self.set    = Set(self.values)        self.dup    = Set(self.values)        self.length = 0        self.repr   = "Set([])"#------------------------------------------------------------------------------class TestBasicOpsSingleton(TestBasicOps):    def setUp(self):        self.case   = "unit set (number)"        self.values = [3]        self.set    = Set(self.values)        self.dup    = Set(self.values)        self.length = 1        self.repr   = "Set([3])"    def test_in(self):        self.failUnless(3 in self.set)    def test_not_in(self):        self.failUnless(2 not in self.set)#------------------------------------------------------------------------------class TestBasicOpsTuple(TestBasicOps):    def setUp(self):        self.case   = "unit set (tuple)"        self.values = [(0, "zero")]        self.set    = Set(self.values)        self.dup    = Set(self.values)        self.length = 1        self.repr   = "Set([(0, 'zero')])"    def test_in(self):        self.failUnless((0, "zero") in self.set)    def test_not_in(self):        self.failUnless(9 not in self.set)#------------------------------------------------------------------------------class TestBasicOpsTriple(TestBasicOps):    def setUp(self):        self.case   = "triple set"        self.values = [0, "zero", operator.add]        self.set    = Set(self.values)        self.dup    = Set(self.values)        self.length = 3        self.repr   = None#==============================================================================def baditer():    raise TypeError    yield Truedef gooditer():    yield Trueclass TestExceptionPropagation(unittest.TestCase):    """SF 628246:  Set constructor should not trap iterator TypeErrors"""    def test_instanceWithException(self):        self.assertRaises(TypeError, Set, baditer())    def test_instancesWithoutException(self):        # All of these iterables should load without exception.        Set([1,2,3])        Set((1,2,3))        Set({'one':1, 'two':2, 'three':3})        Set(xrange(3))        Set('abc')        Set(gooditer())#==============================================================================class TestSetOfSets(unittest.TestCase):    def test_constructor(self):        inner = Set([1])        outer = Set([inner])        element = outer.pop()        self.assertEqual(type(element), ImmutableSet)        outer.add(inner)        # Rebuild set of sets with .add method        outer.remove(inner)        self.assertEqual(outer, Set())   # Verify that remove worked        outer.discard(inner)    # Absence of KeyError indicates working fine#==============================================================================class TestBinaryOps(unittest.TestCase):    def setUp(self):        self.set = Set((2, 4, 6))    def test_eq(self):              # SF bug 643115        self.assertEqual(self.set, Set({2:1,4:3,6:5}))    def test_union_subset(self):        result = self.set | Set([2])        self.assertEqual(result, Set((2, 4, 6)))    def test_union_superset(self):        result = self.set | Set([2, 4, 6, 8])        self.assertEqual(result, Set([2, 4, 6, 8]))    def test_union_overlap(self):        result = self.set | Set([3, 4, 5])        self.assertEqual(result, Set([2, 3, 4, 5, 6]))    def test_union_non_overlap(self):        result = self.set | Set([8])        self.assertEqual(result, Set([2, 4, 6, 8]))    def test_intersection_subset(self):        result = self.set & Set((2, 4))        self.assertEqual(result, Set((2, 4)))    def test_intersection_superset(self):        result = self.set & Set([2, 4, 6, 8])        self.assertEqual(result, Set([2, 4, 6]))    def test_intersection_overlap(self):        result = self.set & Set([3, 4, 5])        self.assertEqual(result, Set([4]))    def test_intersection_non_overlap(self):        result = self.set & Set([8])        self.assertEqual(result, empty_set)    def test_sym_difference_subset(self):        result = self.set ^ Set((2, 4))        self.assertEqual(result, Set([6]))    def test_sym_difference_superset(self):        result = self.set ^ Set((2, 4, 6, 8))        self.assertEqual(result, Set([8]))    def test_sym_difference_overlap(self):        result = self.set ^ Set((3, 4, 5))        self.assertEqual(result, Set([2, 3, 5, 6]))    def test_sym_difference_non_overlap(self):        result = self.set ^ Set([8])        self.assertEqual(result, Set([2, 4, 6, 8]))    def _test_cmp(self):        a, b = Set('a'), Set('b')        self.assertRaises(TypeError, cmp, a, b)        # You can view this as a buglet:  cmp(a, a) does not raise TypeError,        # because __eq__ is tried before __cmp__, and a.__eq__(a) returns True,        # which Python thinks is good enough to synthesize a cmp() result        # without calling __cmp__.        self.assertEqual(cmp(a, a), 0)        self.assertRaises(TypeError, cmp, a, 12)        self.assertRaises(TypeError, cmp, "abc", a)#==============================================================================class TestUpdateOps(unittest.TestCase):    def setUp(self):        self.set = Set((2, 4, 6))    def test_union_subset(self):        self.set |= Set([2])        self.assertEqual(self.set, Set((2, 4, 6)))    def test_union_superset(self):        self.set |= Set([2, 4, 6, 8])        self.assertEqual(self.set, Set([2, 4, 6, 8]))    def test_union_overlap(self):        self.set |= Set([3, 4, 5])        self.assertEqual(self.set, Set([2, 3, 4, 5, 6]))    def test_union_non_overlap(self):        self.set |= Set([8])        self.assertEqual(self.set, Set([2, 4, 6, 8]))    def test_union_method_call(self):        self.set.union_update(Set([3, 4, 5]))        self.assertEqual(self.set, Set([2, 3, 4, 5, 6]))    def test_intersection_subset(self):        self.set &= Set((2, 4))        self.assertEqual(self.set, Set((2, 4)))    def test_intersection_superset(self):        self.set &= Set([2, 4, 6, 8])        self.assertEqual(self.set, Set([2, 4, 6]))    def test_intersection_overlap(self):        self.set &= Set([3, 4, 5])        self.assertEqual(self.set, Set([4]))    def test_intersection_non_overlap(self):        self.set &= Set([8])        self.assertEqual(self.set, empty_set)    def test_intersection_method_call(self):        self.set.intersection_update(Set([3, 4, 5]))        self.assertEqual(self.set, Set([4]))    def test_sym_difference_subset(self):        self.set ^= Set((2, 4))        self.assertEqual(self.set, Set([6]))    def test_sym_difference_superset(self):        self.set ^= Set((2, 4, 6, 8))        self.assertEqual(self.set, Set([8]))    def test_sym_difference_overlap(self):        self.set ^= Set((3, 4, 5))        self.assertEqual(self.set, Set([2, 3, 5, 6]))    def test_sym_difference_non_overlap(self):        self.set ^= Set([8])        self.assertEqual(self.set, Set([2, 4, 6, 8]))    def test_sym_difference_method_call(self):        self.set.symmetric_difference_update(Set([3, 4, 5]))        self.assertEqual(self.set, Set([2, 3, 5, 6]))    def test_difference_subset(self):        self.set -= Set((2, 4))        self.assertEqual(self.set, Set([6]))    def test_difference_superset(self):        self.set -= Set((2, 4, 6, 8))        self.assertEqual(self.set, Set([]))    def test_difference_overlap(self):        self.set -= Set((3, 4, 5))        self.assertEqual(self.set, Set([2, 6]))    def test_difference_non_overlap(self):        self.set -= Set([8])        self.assertEqual(self.set, Set([2, 4, 6]))    def test_difference_method_call(self):        self.set.difference_update(Set([3, 4, 5]))        self.assertEqual(self.set, Set([2, 6]))#==============================================================================class TestMutate(unittest.TestCase):    def setUp(self):        self.values = ["a", "b", "c"]        self.set = Set(self.values)    def test_add_present(self):        self.set.add("c")        self.assertEqual(self.set, Set("abc"))    def test_add_absent(self):        self.set.add("d")        self.assertEqual(self.set, Set("abcd"))    def test_add_until_full(self):        tmp = Set()        expected_len = 0        for v in self.values:            tmp.add(v)            expected_len += 1            self.assertEqual(len(tmp), expected_len)        self.assertEqual(tmp, self.set)    def test_remove_present(self):        self.set.remove("b")        self.assertEqual(self.set, Set("ac"))    def test_remove_absent(self):        try:            self.set.remove("d")            self.fail("Removing missing element should have raised LookupError")        except LookupError:            pass    def test_remove_until_empty(self):        expected_len = len(self.set)        for v in self.values:            self.set.remove(v)            expected_len -= 1            self.assertEqual(len(self.set), expected_len)    def test_discard_present(self):        self.set.discard("c")        self.assertEqual(self.set, Set("ab"))    def test_discard_absent(self):        self.set.discard("d")        self.assertEqual(self.set, Set("abc"))    def test_clear(self):        self.set.clear()        self.assertEqual(len(self.set), 0)    def test_pop(self):        popped = {}        while self.set:            popped[self.set.pop()] = None        self.assertEqual(len(popped), len(self.values))        for v in self.values:            self.failUnless(v in popped)    def test_update_empty_tuple(self):        self.set.union_update(())

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -