def testSetZero(self): # {{{ """Setting to zero deletes""" a = multiset((10, 20, 30)) a[10] = 0 expected = set({20: 1, 30: 1}.items()) self.assertEqual(set(a.items()), expected)
def testBadNegative(self): # {{{ """Cannot set negative values""" a = multiset([20]) msg = re.compile("Negative element counts are invalid: -100") self.assertRaisesEx(ValueError, a.__setitem__, 20, -100, exc_pattern=msg)
def testBadDict(self): #{{{ '''Dict with non-integer values will set keys with count 1''' test = {'hello': 'world', 'william': 400} expected = {'hello': 1, 'william': 400} a = multiset(test) self.assertEqual(dict(a), expected)
def testIntersection(self): #{{{ '''Intersection returns min count of common elements''' a = multiset({'hello': 100, 'world': 200}) b = multiset({'hello': 2000, 'world': 10}) self.assertEqual(dict(a & b), {'hello': 100, 'world': 10})
def testMultiset(self): #{{{ '''Pass another multiset will copy it unconditionally''' a = multiset(range(10)) b = multiset(a) expected = [(i, 1) for i in a] self.assertEqual(b.items(), expected)
def testGoodDict(self): #{{{ '''Pass a dict with integer values''' test = {'hello': 20, 'world': 30} a = multiset(test) self.assertEqual(dict(a), test)
def testNothing(self): #{{{ '''Pass nothing or empty sequence''' a = multiset() self.assertFalse(a) a = multiset([]) self.assertFalse(a)
def testIter(self): #{{{ '''Pass a hashable iter, sets count to one''' a = range(10) a = multiset(a) expected = [(i, 1) for i in a] self.assertEqual(a.items(), expected)
def testHaveAll(self): #{{{ '''Union contains all objects''' a = multiset(range(5)) b = multiset((i, i) for i in xrange(5)) self.assertEqual(dict(a|b), dict((i, 1 if i == 0 else i) for i in xrange(5)))
def testSetDefault(self): #{{{ '''Set default properly''' a = multiset() res = a.setdefault('h', 200) self.assertEqual(dict(a), {'h': 200}) self.assertEqual(res, 200)
def testDefault(self): #{{{ '''Default set to 1''' a = multiset() res = a.setdefault('hello') self.assertEqual(dict(a), {'hello': 1}) self.assertEqual(res, 1)