示例#1
0
 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': '*****@*****.**'
     }, '*****@*****.**')
示例#2
0
 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)
示例#3
0
    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'
            }, '*****@*****.**')
示例#4
0
 def test_div(self):
     self.assert_bender(K(4) / K(2), None, 2)
     self.assertAlmostEqual((K(5) / K(2))(None), 2.5, 2)
示例#5
0
 def test_mul(self):
     self.assert_bender(K(5) * K(2), None, 10)
示例#6
0
 def test_sub(self):
     self.assert_bender(K(5) - K(2), None, 3)
示例#7
0
 def test_add(self):
     self.assert_bender(K(5) + K(2), None, 7)
示例#8
0
 def test_if_false(self):
     if_ = If(S('country') == K('China'), S('first_name'), S('last_name'))
     self.assert_bender(if_, self.guga, 'Kuerten')
示例#9
0
 def test_compatibility(self):
     # TODO: remove this on next release
     bender = self.cls(K([1]), lambda i: True)
     self.assert_bender(bender, {}, [1])
示例#10
0
 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)
示例#11
0
 def test_eq(self):
     self.assert_bender(K(42) == K(42), None, True)
     self.assert_bender(K(42) == K(27), None, False)
示例#12
0
 def test_neg(self):
     self.assert_bender(-K(1), None, -1)
     self.assert_bender(-K(-1), None, 1)
示例#13
0
 def test_if_false_default(self):
     if_ = If(S('country') == K('China'), S('first_name'))
     self.assert_bender(if_, self.guga, None)
示例#14
0
 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)
示例#15
0
 def test_compatibility(self):
     # TODO: remove this when compatibility is broken
     bender = self.cls(K([1]), lambda i: i)
     self.assert_bender(bender, {}, [1])
示例#16
0
 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)
示例#17
0
 def test_compatibility(self):
     # TODO: remove this when compatibility is broken
     bender = self.cls(K([1, 2]), add)
     self.assert_bender(bender, {}, 3)
示例#18
0
 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.')
示例#20
0
 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')