Esempio n. 1
0
 def test_global_name(self):
     global verify
     verify = 'test'
     proc = ArgProc()
     proc.rule('$left:verify => $right *')
     assert proc.process({'left': 'test'}) == {'right': 'test'}
     assert_raises(Error, proc.process, {'left': 'value'})
Esempio n. 2
0
 def test_global_name(self):
     global verify
     verify = 'test'
     proc = ArgProc()
     proc.rule('$left:verify => $right *')
     assert proc.process({'left': 'test'}) == {'right': 'test'}
     assert_raises(Error, proc.process, {'left': 'value'})
Esempio n. 3
0
 def test_multiple_rules(self):
     proc = ArgProc()
     proc.rules("""
         $left1 <=> $right1
         $left2 <=> $right2
         """)
     right = proc.process({'left1': 1, 'left2': 2})
     assert right == {'right1': 1, 'right2': 2}
Esempio n. 4
0
 def test_comment(self):
     proc = ArgProc()
     proc.rules("""
             $left1 => $right1  # comment
             #$left2 => $right2
     """)
     assert proc.process({'left1': 10}) == {'right1': 10}
     assert proc.process({'left2': 20}) == {}
Esempio n. 5
0
 def test_multiple_rules(self):
     proc = ArgProc()
     proc.rules("""
         $left1 <=> $right1
         $left2 <=> $right2
         """)
     right = proc.process({'left1': 1, 'left2': 2})
     assert right== {'right1': 1, 'right2': 2}
Esempio n. 6
0
 def test_comment(self):
     proc = ArgProc()
     proc.rules("""
             $left1 => $right1  # comment
             #$left2 => $right2
     """)
     assert proc.process({'left1': 10}) == {'right1': 10}
     assert proc.process({'left2': 20}) == {}
Esempio n. 7
0
 def test_unidirectional(self):
     proc = ArgProc()
     proc.rule('$left => $right')
     assert proc.process({'left': 10}) == {'right': 10}
     assert proc.reverse({'right': 10}) == {}
     proc = ArgProc()
     proc.rule('$left <= $right')
     assert proc.process({'left': 10}) == {}
     assert proc.reverse({'right': 10}) == {'left': 10}
Esempio n. 8
0
 def test_unidirectional(self):
     proc = ArgProc()
     proc.rule('$left => $right')
     assert proc.process({'left': 10}) == {'right': 10}
     assert proc.reverse({'right': 10}) == {}
     proc = ArgProc()
     proc.rule('$left <= $right')
     assert proc.process({'left': 10}) == {}
     assert proc.reverse({'right': 10}) == {'left': 10}
Esempio n. 9
0
 def test_simple(self):
     proc = ArgProc()
     proc.rule('$left <=> $right')
     assert proc.process({'left': 10}) == {'right': 10}
     assert proc.process({'right': 10}) == {}
     assert proc.reverse({'right': 10}) == {'left': 10}
     assert proc.reverse({'left': 10}) == {}
Esempio n. 10
0
 def test_simple(self):
     proc = ArgProc()
     proc.rule('$left <=> $right')
     assert proc.process({'left': 10}) == { 'right': 10 }
     assert proc.process({'right': 10}) == {}
     assert proc.reverse({'right': 10}) == { 'left': 10 }
     assert proc.reverse({'left': 10}) == {}
Esempio n. 11
0
 def test_validator_callable(self):
     proc = ArgProc()
     proc.rule('$left:int => $right')
     assert proc.process({'left': 10}) == {'right': 10}
     assert_raises(Error, proc.process, {'left': '10a'})
Esempio n. 12
0
 def test_validator_literal(self):
     proc = ArgProc()
     proc.rule('$left:"value" => $right')
     assert proc.process({'left': 'value'}) == {'right': 'value'}
     assert_raises(Error, proc.process, {'left': 'val'})
Esempio n. 13
0
 def test_slicing(self):
     proc = ArgProc()
     proc.rule('[1,2,3][1:2] => $right')
     assert proc.process({}) == {'right': [2]}
Esempio n. 14
0
 def test_attribute_reference(self):
     proc = ArgProc()
     proc.rule('int.__class__ => $right')
     assert proc.process({}) == {'right': type}
Esempio n. 15
0
 def test_function_call(self):
     proc = ArgProc()
     proc.rule('int($left) => $right')
     assert proc.process({'left': '10'}) == {'right': 10}
Esempio n. 16
0
 def test_list(self):
     proc = ArgProc()
     proc.rule('[1,2,3] => $right')
     assert proc.process({}) == {'right': [1,2,3]}
Esempio n. 17
0
 def test_true(self):
     proc = ArgProc()
     proc.rule('True => $right')
     assert proc.process({}) == {'right': True}
Esempio n. 18
0
 def test_dict(self):
     proc = ArgProc()
     proc.rule('{1:2, 3:4} => $right')
     assert proc.process({}) == {'right': {1:2, 3:4}}
Esempio n. 19
0
 def test_multiple_tags(self):
     proc = ArgProc(tags=['tag2'])
     proc.rule('$left => $right @tag1,@tag2')
     assert proc.process({'left': 10}) == {'right': 10}
     proc = ArgProc(tags=[])
     proc.rule('$left => $right @tag1,@tag2')
     assert proc.process({'left': 10}) == {}
     proc = ArgProc()
     proc.rule('$left => $right @tag1,@tag2')
     assert proc.process({'left': 10}) == {'right': 10}
Esempio n. 20
0
 def test_function_with_validator(self):
     proc = ArgProc()
     proc.rule('int($left:int) => $right')
     assert proc.process({'left': 1}) == {'right': 1}
Esempio n. 21
0
 def test_validator_function_call(self):
     proc = ArgProc()
     proc.rule('$left:set((1,2)) => $right')
     assert proc.process({'left': 1}) == {'right': 1}
     assert_raises(Error, proc.process, {'left': 3})
Esempio n. 22
0
 def test_validator_list(self):
     proc = ArgProc()
     proc.rule('$left:[1,2,3] => $right')
     assert proc.process({'left': 2}) == {'right': 2}
     assert_raises(Error, proc.process, {'left': 4})
Esempio n. 23
0
 def test_optional(self):
     proc = ArgProc()
     proc.rule('$left <=> $right')
     assert proc.process({}) == {}
Esempio n. 24
0
 def test_str_single_quoted(self):
     proc = ArgProc()
     proc.rule('\'test\' => $right')
     assert proc.process({}) == {'right': 'test'}
Esempio n. 25
0
 def test_negated_tag(self):
     proc = ArgProc()
     proc.rule('$left => $right @!tag')
     assert proc.process({'left': 10}) == {'right': 10}
     proc = ArgProc(tags=['tg'])
     proc.rule('$left => $right @!tag')
     assert proc.process({'left': 10}) == {'right': 10}
     proc = ArgProc(tags=['tag'])
     proc.rule('$left => $right @!tag')
     assert proc.process({'left': 10}) == {}
Esempio n. 26
0
 def test_validator_literal(self):
     proc = ArgProc()
     proc.rule('$left:"value" => $right')
     assert proc.process({'left': 'value'}) == {'right': 'value'}
     assert_raises(Error, proc.process, {'left': 'val'})
Esempio n. 27
0
 def test_int(self):
     proc = ArgProc()
     proc.rule('10 => $right')
     assert proc.process({}) == {'right': 10}
Esempio n. 28
0
 def test_subscription(self):
     proc = ArgProc()
     proc.rule('[1,2,3][1] => $right')
     assert proc.process({}) == {'right': 2}
Esempio n. 29
0
 def test_tuple(self):
     proc = ArgProc()
     proc.rule('(1,2,3) => $right')
     assert proc.process({}) == {'right': (1, 2, 3)}
Esempio n. 30
0
 def test_mandatory(self):
     proc = ArgProc()
     proc.rule('$left <=> $right *')
     assert_raises(Error, proc.process, {})
Esempio n. 31
0
 def test_dict(self):
     proc = ArgProc()
     proc.rule('{1:2, 3:4} => $right')
     assert proc.process({}) == {'right': {1: 2, 3: 4}}
Esempio n. 32
0
 def test_optional(self):
     proc = ArgProc()
     proc.rule('$left <=> $right')
     assert proc.process({}) == {}
Esempio n. 33
0
 def test_function_call_with_multiple_arguments(self):
     proc = ArgProc()
     proc.rule('max($left, 2) => $right')
     assert proc.process({'left': 1}) == {'right': 2}
Esempio n. 34
0
 def test_attribute_reference(self):
     proc = ArgProc()
     proc.rule('int.__class__ => $right')
     assert proc.process({}) == {'right': type}
Esempio n. 35
0
 def test_subscription(self):
     proc = ArgProc()
     proc.rule('[1,2,3][1] => $right')
     assert proc.process({}) == {'right': 2}
Esempio n. 36
0
 def test_validator_list(self):
     proc = ArgProc()
     proc.rule('$left:[1,2,3] => $right')
     assert proc.process({'left': 2}) == {'right': 2}
     assert_raises(Error, proc.process, {'left': 4})
Esempio n. 37
0
 def test_validator_callable(self):
     proc = ArgProc()
     proc.rule('$left:int => $right')
     assert proc.process({'left': 10}) == {'right': 10}
     assert_raises(Error, proc.process, {'left': '10a'})
Esempio n. 38
0
 def test_function_with_validator(self):
     proc = ArgProc()
     proc.rule('int($left:int) => $right')
     assert proc.process({'left': 1}) == {'right': 1}
Esempio n. 39
0
 def test_function_call_with_multiple_arguments(self):
     proc = ArgProc()
     proc.rule('max($left, 2) => $right')
     assert proc.process({'left': 1}) == {'right': 2}
Esempio n. 40
0
 def test_slicing(self):
     proc = ArgProc()
     proc.rule('[1,2,3][1:2] => $right')
     assert proc.process({}) == {'right': [2]}
Esempio n. 41
0
 def test_validator_function_call(self):
     proc = ArgProc()
     proc.rule('$left:set((1,2)) => $right')
     assert proc.process({'left': 1}) == {'right': 1}
     assert_raises(Error, proc.process, {'left': 3})
Esempio n. 42
0
 def test_multiple_tags(self):
     proc = ArgProc(tags=['tag2'])
     proc.rule('$left => $right @tag1,@tag2')
     assert proc.process({'left': 10}) == {'right': 10}
     proc = ArgProc(tags=[])
     proc.rule('$left => $right @tag1,@tag2')
     assert proc.process({'left': 10}) == {}
     proc = ArgProc()
     proc.rule('$left => $right @tag1,@tag2')
     assert proc.process({'left': 10}) == {'right': 10}
Esempio n. 43
0
 def test_none(self):
     proc = ArgProc()
     proc.rule('None => $right')
     assert proc.process({}) == {'right': None}
Esempio n. 44
0
 def test_function_call(self):
     proc = ArgProc()
     proc.rule('int($left) => $right')
     assert proc.process({'left': '10'}) == {'right': 10}
Esempio n. 45
0
 def test_negated_tag(self):
     proc = ArgProc()
     proc.rule('$left => $right @!tag')
     assert proc.process({'left': 10}) == {'right': 10}
     proc = ArgProc(tags=['tg'])
     proc.rule('$left => $right @!tag')
     assert proc.process({'left': 10}) == {'right': 10}
     proc = ArgProc(tags=['tag'])
     proc.rule('$left => $right @!tag')
     assert proc.process({'left': 10}) == {}
Esempio n. 46
0
 def test_true(self):
     proc = ArgProc()
     proc.rule('True => $right')
     assert proc.process({}) == {'right': True}
Esempio n. 47
0
 def test_mandatory(self):
     proc = ArgProc()
     proc.rule('$left <=> $right *')
     assert_raises(Error, proc.process, {})
Esempio n. 48
0
 def test_false(self):
     proc = ArgProc()
     proc.rule('False => $right')
     assert proc.process({}) == {'right': False}
Esempio n. 49
0
 def test_int(self):
     proc = ArgProc()
     proc.rule('10 => $right')
     assert proc.process({}) == {'right': 10}
Esempio n. 50
0
 def test_float(self):
     proc = ArgProc()
     proc.rule('3.14 => $right')
     assert proc.process({}) == {'right': 3.14}
Esempio n. 51
0
 def test_none(self):
     proc = ArgProc()
     proc.rule('None => $right')
     assert proc.process({}) == {'right': None}
Esempio n. 52
0
 def test_str_single_quoted(self):
     proc = ArgProc()
     proc.rule('\'test\' => $right')
     assert proc.process({}) == {'right': 'test'}
Esempio n. 53
0
 def test_false(self):
     proc = ArgProc()
     proc.rule('False => $right')
     assert proc.process({}) == {'right': False}
Esempio n. 54
0
 def test_str_double_quoted(self):
     proc = ArgProc()
     proc.rule('"test" => $right')
     assert proc.process({}) == {'right': 'test'}
Esempio n. 55
0
 def test_float(self):
     proc = ArgProc()
     proc.rule('3.14 => $right')
     assert proc.process({}) == {'right': 3.14}
Esempio n. 56
0
 def test_tuple(self):
     proc = ArgProc()
     proc.rule('(1,2,3) => $right')
     assert proc.process({}) == {'right': (1,2,3)}
Esempio n. 57
0
 def test_str_double_quoted(self):
     proc = ArgProc()
     proc.rule('"test" => $right')
     assert proc.process({}) == {'right': 'test'}
Esempio n. 58
0
 def test_list(self):
     proc = ArgProc()
     proc.rule('[1,2,3] => $right')
     assert proc.process({}) == {'right': [1, 2, 3]}
Esempio n. 59
0
 def _get_transform(self, resource, reverse):
     type = resource['!type']
     if type not in self._cache:
         if reverse:
             for col in application.collections.values():
                 proc = ArgumentProcessor(ignore_missing=True)
                 proc.rules(col.entity_transform)
                 result = proc.process({'!type': col.contains})
                 if result.get('!type') == type:
                     break
             else:
                 col = None
         else:
             for col in application.collections.values():
                 if col.contains == type:
                     break
             else:
                 col = None
         if col and getattr(col, 'entity_transform', None):
             proc = ArgumentProcessor()
             proc.namespace = self._get_namespace(col)
             proc.tags = self._get_tags(col, resource)
             proc.rules(col.entity_transform)
         else:
             proc = None
         self._cache[type] = proc
     proc = self._cache[type]
     return proc
Esempio n. 60
0
 def test_tuple_with_one_entry(self):
     proc = ArgProc()
     proc.rule('(1,) => $right')
     assert proc.process({}) == {'right': (1,)}