@@ -74,7 +74,7 @@ def test_path_function_value_must_be_consistent():
7474 func ('$.Variable' , 'string' )
7575
7676def  test_is_function_value_must_be_consistent ():
77-  is_functions  =  {
77+  type_functions  =  {
7878 'IsPresent' ,
7979 'IsNull' ,
8080 'IsString' ,
@@ -83,13 +83,110 @@ def test_is_function_value_must_be_consistent():
8383 'IsTimestamp' 
8484 }
8585
86-  for  is_function  in  is_functions :
87-  func  =  getattr (ChoiceRule , is_function )
86+  for  type_function  in  type_functions :
87+  func  =  getattr (ChoiceRule , type_function )
8888 with  pytest .raises (ValueError ):
8989 func ('$.Variable' , 'string' )
9090 with  pytest .raises (ValueError ):
9191 func ('$.Variable' , 101 )
9292
93+ # tox -e py37 -- -s -vv tests/unit/test_choice_rule.py::test_dynamic_comparator_serialization 
94+ def  test_static_comparator_serialization ():
95+  string_timestamp_static_comparators  =  {
96+  'StringEquals' ,
97+  'StringLessThan' ,
98+  'StringLessThanEquals' ,
99+  'StringGreaterThan' ,
100+  'StringGreaterThanEquals' ,
101+  'TimestampEquals' ,
102+  'TimestampLessThan' ,
103+  'TimestampGreaterThan' ,
104+  'TimestampLessThanEquals' 
105+  }
106+ 
107+  for  string_timestamp_static_comparator  in  string_timestamp_static_comparators :
108+  type_rule  =  getattr (ChoiceRule , string_timestamp_static_comparator )('$.input' , 'hello' )
109+  expected_dict  =  {}
110+  expected_dict ['Variable' ] =  '$.input' 
111+  expected_dict [string_timestamp_static_comparator ] =  'hello' 
112+  assert  type_rule .to_dict () ==  expected_dict 
113+ 
114+  number_static_comparators  =  {
115+  'NumericEquals' ,
116+  'NumericLessThan' ,
117+  'NumericGreaterThan' ,
118+  'NumericLessThanEquals' ,
119+  'NumericGreaterThanEquals' 
120+  }
121+ 
122+  for  number_static_comparator  in  number_static_comparators :
123+  type_rule  =  getattr (ChoiceRule , number_static_comparator )('$.input' , 123 )
124+  expected_dict  =  {}
125+  expected_dict ['Variable' ] =  '$.input' 
126+  expected_dict [number_static_comparator ] =  123 
127+  assert  type_rule .to_dict () ==  expected_dict 
128+ 
129+  boolean_static_comparators  =  {
130+  'BooleanEquals' 
131+  }
132+ 
133+  for  boolean_static_comparator  in  boolean_static_comparators :
134+  type_rule  =  getattr (ChoiceRule , boolean_static_comparator )('$.input' , False )
135+  expected_dict  =  {}
136+  expected_dict ['Variable' ] =  '$.input' 
137+  expected_dict [boolean_static_comparator ] =  False 
138+  assert  type_rule .to_dict () ==  expected_dict 
139+ 
140+ def  test_dynamic_comparator_serialization ():
141+  dynamic_comparators  =  {
142+  'StringEqualsPath' ,
143+  'StringLessThanPath' ,
144+  'StringLessThanEqualsPath' ,
145+  'StringGreaterThanPath' ,
146+  'StringGreaterThanEqualsPath' ,
147+  'TimestampEqualsPath' ,
148+  'TimestampLessThanPath' ,
149+  'TimestampGreaterThanPath' ,
150+  'TimestampLessThanEqualsPath' ,
151+  'NumericEqualsPath' ,
152+  'NumericLessThanPath' ,
153+  'NumericGreaterThanPath' ,
154+  'NumericLessThanEqualsPath' ,
155+  'NumericGreaterThanEqualsPath' ,
156+  'BooleanEqualsPath' 
157+  }
158+ 
159+  for  dynamic_comparator  in  dynamic_comparators :
160+  type_rule  =  getattr (ChoiceRule , dynamic_comparator )('$.input' , '$.input2' )
161+  expected_dict  =  {}
162+  expected_dict ['Variable' ] =  '$.input' 
163+  expected_dict [dynamic_comparator ] =  '$.input2' 
164+  assert  type_rule .to_dict () ==  expected_dict 
165+ 
166+ def  test_type_check_comparators_serialization ():
167+  type_comparators  =  {
168+  'IsPresent' ,
169+  'IsNull' ,
170+  'IsString' ,
171+  'IsNumeric' ,
172+  'IsBoolean' ,
173+  'IsTimestamp' 
174+  }
175+ 
176+  for  type_comparator  in  type_comparators :
177+  type_rule  =  getattr (ChoiceRule , type_comparator )('$.input' , True )
178+  expected_dict  =  {}
179+  expected_dict ['Variable' ] =  '$.input' 
180+  expected_dict [type_comparator ] =  True 
181+  assert  type_rule .to_dict () ==  expected_dict 
182+ 
183+ def  test_string_matches_serialization ():
184+  string_matches_rule  =  ChoiceRule .StringMatches ('$.input' , 'hello*world\\ *' )
185+  assert  string_matches_rule .to_dict () ==  {
186+  'Variable' : '$.input' ,
187+  'StringMatches' : 'hello*world\\ *' 
188+  }
189+ 
93190def  test_rule_serialization ():
94191 bool_rule  =  ChoiceRule .BooleanEquals ('$.BooleanVariable' , True )
95192 assert  bool_rule .to_dict () ==  {
0 commit comments