def test__no_match_with_default(self): bender = Switch(S('service'), { 'twitter': S('handle'), 'mastodon': S('handle') + K('@') + S('server') }, default=S('email')) self.assert_bender(bender, { 'service': 'facebook', 'email': '*****@*****.**' }, '*****@*****.**')
def test_flat_mapping(self): mapping = { 'a_field': S('a', 'b'), 'another_field': K('wow'), } source = {'a': {'b': 'ok'}} expected = { 'a_field': 'ok', 'another_field': 'wow', } self.assertDictEqual(bend(mapping, source), expected)
def test_match(self): bender = Switch(S('service'), { 'twitter': S('handle'), 'mastodon': S('handle') + K('@') + S('server') }, default=S('email')) self.assert_bender(bender, { 'service': 'twitter', 'handle': 'etandel' }, 'etandel') self.assert_bender( bender, { 'service': 'mastodon', 'handle': 'etandel', 'server': 'mastodon.social' }, '*****@*****.**')
def test_div(self): self.assert_bender(K(4) / K(2), None, 2) self.assertAlmostEqual((K(5) / K(2))(None), 2.5, 2)
def test_mul(self): self.assert_bender(K(5) * K(2), None, 10)
def test_sub(self): self.assert_bender(K(5) - K(2), None, 3)
def test_add(self): self.assert_bender(K(5) + K(2), None, 7)
def test_if_false(self): if_ = If(S('country') == K('China'), S('first_name'), S('last_name')) self.assert_bender(if_, self.guga, 'Kuerten')
def test_compatibility(self): # TODO: remove this on next release bender = self.cls(K([1]), lambda i: True) self.assert_bender(bender, {}, [1])
def test_and(self): self.assert_bender(K(True) & K(True), None, True) self.assert_bender(K(True) & K(False), None, False) self.assert_bender(K(False) & K(True), None, False) self.assert_bender(K(False) & K(False), None, False)
def test_eq(self): self.assert_bender(K(42) == K(42), None, True) self.assert_bender(K(42) == K(27), None, False)
def test_neg(self): self.assert_bender(-K(1), None, -1) self.assert_bender(-K(-1), None, 1)
def test_if_false_default(self): if_ = If(S('country') == K('China'), S('first_name')) self.assert_bender(if_, self.guga, None)
def test_if_true_default(self): if_ = If(S('country') == K('China'), when_false=S('last_name')) self.assert_bender(if_, self.na_li, None)
def test_compatibility(self): # TODO: remove this when compatibility is broken bender = self.cls(K([1]), lambda i: i) self.assert_bender(bender, {}, [1])
def test_or(self): self.assert_bender(K(True) | K(True), None, True) self.assert_bender(K(True) | K(False), None, True) self.assert_bender(K(False) | K(True), None, True) self.assert_bender(K(False) | K(False), None, False)
def test_compatibility(self): # TODO: remove this when compatibility is broken bender = self.cls(K([1, 2]), add) self.assert_bender(bender, {}, 3)
def test_invert(self): self.assert_bender(~K(True), None, False) self.assert_bender(~K(False), None, True)
def test_format(self): bender = Format('{} {} {} {noun}.', K('This'), K('is'), K('a'), noun=K('test')) self.assert_bender(bender, None, 'This is a test.')
def test_if_true(self): if_ = If(S('country') == K('China'), S('first_name'), S('last_name')) self.assert_bender(if_, self.na_li, 'Li')