Ejemplo n.º 1
0
 def test_setitem(self):
     """ConstrainedList setitem should work only if item in constraint"""
     a = ConstrainedList("12", "123")
     a[0] = "3"
     self.assertEqual(a, list("32"))
     self.assertRaises(ConstraintError, a.__setitem__, 0, 3)
     a = ConstrainedList("1" * 20, "123")
     self.assertRaises(ConstraintError, a.__setitem__, slice(0, 1, 1), [3])
     self.assertRaises(ConstraintError, a.__setitem__, slice(0, 1, 1), ["111"])
     a[2:9:2] = "3333"
     self.assertEqual(a, list("11313131311111111111"))
Ejemplo n.º 2
0
 def test_iadd_prevents_bad_data(self):
     """ConstrainedList should allow in-place addition only of compliant data"""
     a = ConstrainedList("12", "123")
     a += "2"
     self.assertEqual(a, list("122"))
     self.assertEqual(a.constraint, "123")
     self.assertRaises(ConstraintError, a.__iadd__, "4")
Ejemplo n.º 3
0
 def test_setslice(self):
     """ConstrainedList setslice should fail if slice has invalid chars"""
     a = ConstrainedList("123333", "12345")
     a[2:4] = ["2", "2"]
     self.assertEqual(a, list("122233"))
     self.assertRaises(ConstraintError, a.__setslice__, 2, 4, [2, 2])
     a[:] = []
     self.assertEqual(a, [])
     self.assertEqual(a.constraint, "12345")
Ejemplo n.º 4
0
 def test_setitem_masks(self):
     """ConstrainedList setitem with masks should transform input"""
     a = ConstrainedList("12333", list(range(5)), lambda x: int(x) + 1)
     self.assertEqual(a, [2, 3, 4, 4, 4])
     self.assertRaises(ConstraintError, a.append, 4)
     b = a[1:3]
     assert b.mask is a.mask
     assert "1" not in a
     assert "2" not in a
     assert 2 in a
     assert "x" not in a
Ejemplo n.º 5
0
 def test_init_good_data(self):
     """ConstrainedList should init OK if list matches constraint"""
     self.assertEqual(ConstrainedList("abc", "abcd"), list("abc"))
     self.assertEqual(ConstrainedList("", "abcd"), list(""))
     items = [1, 2, 3.2234, (["a"], ["b"]), list("xyz")]
     # should accept anything str() does if no constraint is passed
     self.assertEqual(ConstrainedList(items), items)
     self.assertEqual(ConstrainedList(items, None), items)
     self.assertEqual(ConstrainedList("12345"), list("12345"))
     # check that list is formatted correctly and chars are all there
     test_list = list("12345")
     self.assertEqual(ConstrainedList(test_list, "12345"), test_list)
Ejemplo n.º 6
0
 def test_add_prevents_bad_data(self):
     """ConstrainedList should allow addition only of compliant data"""
     a = ConstrainedList("123", "12345")
     b = ConstrainedList("444", "4")
     c = ConstrainedList("45", "12345")
     d = ConstrainedList("x")
     self.assertEqual(a + b, list("123444"))
     self.assertEqual(a + c, list("12345"))
     self.assertRaises(ConstraintError, b.__add__, c)
     self.assertRaises(ConstraintError, c.__add__, d)
     # should be OK if constraint removed
     b.constraint = None
     self.assertEqual(b + c, list("44445"))
     self.assertEqual(b + d, list("444x"))
     # should fail if we add the constraint back
     b.constraint = {"4": 1, 5: 2}
     self.assertRaises(ConstraintError, b.__add__, c)
Ejemplo n.º 7
0
 def test_getslice(self):
     """ConstrainedList getslice should remember constraint"""
     a = ConstrainedList("123333", "12345")
     b = a[2:4]
     self.assertEqual(b, list("33"))
     self.assertEqual(b.constraint, "12345")
Ejemplo n.º 8
0
 def test_insert(self):
     """ConstrainedList insert should work only if item in constraint"""
     a = ConstrainedList("12", "123")
     a.insert(0, "2")
     self.assertEqual(a, list("212"))
     self.assertRaises(ConstraintError, a.insert, 0, [2])
Ejemplo n.º 9
0
 def test_extend(self):
     """ConstrainedList extend should work only if all items in constraint"""
     a = ConstrainedList("12", "123")
     a.extend("321")
     self.assertEqual(a, list("12321"))
     self.assertRaises(ConstraintError, a.extend, ["1", "2", 3])
Ejemplo n.º 10
0
 def test_append(self):
     """ConstrainedList append should work only if item in constraint"""
     a = ConstrainedList("12", "123")
     a.append("3")
     self.assertEqual(a, list("123"))
     self.assertRaises(ConstraintError, a.append, 3)
Ejemplo n.º 11
0
 def test_rmul(self):
     """ConstrainedList rmul should preserve constraint"""
     a = ConstrainedList("12", "123")
     b = 3 * a
     self.assertEqual(b, list("121212"))
     self.assertEqual(b.constraint, "123")
Ejemplo n.º 12
0
 def test_imul(self):
     """ConstrainedList imul should preserve constraint"""
     a = ConstrainedList("12", "123")
     a *= 3
     self.assertEqual(a, list("121212"))
     self.assertEqual(a.constraint, "123")