def test_full_set(self): wanted = {u'x': 101, u'y': 102} el = self.new_element() el.set(wanted) eq_(el.value, wanted) el = self.new_element() el.set(udict(x=101, y=102)) eq_(el.value, wanted) el = self.new_element() el.set([(u'x', 101), (u'y', 102)]) eq_(el.value, wanted) el = self.new_element(value=wanted) eq_(el.value, wanted)
def test_dict_update(): schema = Dict.of(Integer.named(u'x'), Integer.named(u'y')) el = schema() def value_dict(element): return dict((k, v.value) for k, v in element.iteritems()) try: el.update(x=20, y=30) except UnicodeError: assert not unicode_coercion_available() el.update(udict(x=20, y=30)) assert udict(x=20, y=30) == el.value el.update({u'y': 40}) assert udict(x=20, y=40) == el.value el.update() assert udict(x=20, y=40) == el.value el.update((_, 100) for _ in u'xy') assert udict(x=100, y=100) == el.value try: el.update([(u'x', 1)], y=2) assert udict(x=1, y=2) == el.value except UnicodeError: assert not unicode_coercion_available() try: el.update([(u'x', 10), (u'y', 10)], x=20, y=20) assert udict(x=20, y=20) == el.value except UnicodeError: assert not unicode_coercion_available() if unicode_coercion_available(): assert_raises(TypeError, el.update, z=1) assert_raises(TypeError, el.update, x=1, z=1) assert_raises(TypeError, el.update, {u'z': 1}) assert_raises(TypeError, el.update, {u'x': 1, u'z': 1}) assert_raises(TypeError, el.update, ((u'z', 1), )) assert_raises(TypeError, el.update, ((u'x', 1), (u'z', 1)))
def test_dict_update(): schema = Dict.of(Integer.named(u'x'), Integer.named(u'y')) el = schema() def value_dict(element): return dict((k, v.value) for k, v in element.iteritems()) try: el.update(x=20, y=30) except UnicodeError: assert not unicode_coercion_available() el.update(udict(x=20, y=30)) assert udict(x=20, y=30) == el.value el.update({u'y': 40}) assert udict(x=20, y=40) == el.value el.update() assert udict(x=20, y=40) == el.value el.update((_, 100) for _ in u'xy') assert udict(x=100, y=100) == el.value try: el.update([(u'x', 1)], y=2) assert udict(x=1, y=2) == el.value except UnicodeError: assert not unicode_coercion_available() try: el.update([(u'x', 10), (u'y', 10)], x=20, y=20) assert udict(x=20, y=20) == el.value except UnicodeError: assert not unicode_coercion_available() if unicode_coercion_available(): assert_raises(TypeError, el.update, z=1) assert_raises(TypeError, el.update, x=1, z=1) assert_raises(TypeError, el.update, {u'z': 1}) assert_raises(TypeError, el.update, {u'x': 1, u'z': 1}) assert_raises(TypeError, el.update, ((u'z', 1),)) assert_raises(TypeError, el.update, ((u'x', 1), (u'z', 1)))