Changeset 49
- Timestamp:
- 22/09/05 09:40:35 (3 years ago)
- Files:
-
- trunk/airspeed.py (modified) (3 diffs)
- trunk/airspeed_test.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/airspeed.py
r48 r49 27 27 operator.__eq__ = lambda a, b: a == b 28 28 operator.__ne__ = lambda a, b: a != b 29 operator.__or__ = lambda a, b: a or b30 operator.__and__ = lambda a, b: a and b31 29 try: 32 30 basestring … … 38 36 # Public interface 39 37 ############################################################################### 38 39 def boolean_value(variable_value): 40 if variable_value == False: return False 41 return not (variable_value is None) 42 40 43 41 44 class Template: … … 443 446 '<' : operator.__lt__, '<=': operator.__le__, 444 447 '==': operator.__eq__, '!=': operator.__ne__, 445 '||': operator.__or__, '&&': operator.__and__} 448 '||': lambda a,b : boolean_value(a) or boolean_value(b), 449 '&&': lambda a,b : boolean_value(a) and boolean_value(b)} 446 450 def parse(self): 447 451 op_string, = self.identity_match(self.BINARY_OP) trunk/airspeed_test.py
r48 r49 86 86 namespace["is_birthday"] = True 87 87 self.assertEquals("Hello your name is Steve. Happy Birthday. Good to see you", template.merge(namespace)) 88 89 def test_if_statement_considers_None_to_be_false(self): 90 template = airspeed.Template("#if ($some_value)hide me#end") 91 self.assertEquals('', template.merge({})) 92 self.assertEquals('', template.merge({'some_value': None})) 88 93 89 94 def test_new_lines_in_templates_are_permitted(self): … … 314 319 self.assertEquals('yes', template.merge({'value1': False, 'value2': True})) 315 320 321 def test_or_operator_considers_not_None_values_true(self): 322 class SomeClass: pass 323 template = airspeed.Template('#if ( $value1 || $value2 )yes#end') 324 self.assertEquals('', template.merge({'value1': None, 'value2': None})) 325 self.assertEquals('yes', template.merge({'value1': SomeClass(), 'value2': False})) 326 self.assertEquals('yes', template.merge({'value1': False, 'value2': SomeClass()})) 327 316 328 def test_and_operator(self): 317 329 template = airspeed.Template('#if ( $value1 && $value2 )yes#end') … … 321 333 self.assertEquals('yes', template.merge({'value1': True, 'value2': True})) 322 334 335 def test_and_operator_considers_not_None_values_true(self): 336 class SomeClass: pass 337 template = airspeed.Template('#if ( $value1 && $value2 )yes#end') 338 self.assertEquals('', template.merge({'value1': None, 'value2': None})) 339 self.assertEquals('yes', template.merge({'value1': SomeClass(), 'value2': True})) 340 self.assertEquals('yes', template.merge({'value1': True, 'value2': SomeClass()})) 341 323 342 def test_parenthesised_value(self): 324 343 template = airspeed.Template('#if ( ($value1 == 1) && ($value2 == 2) )yes#end') … … 337 356 self.assertEquals('yes', template.merge({'value': False})) 338 357 self.assertEquals('', template.merge({'value': True})) 358 359 def test_logical_negation_operator_yields_true_for_None(self): 360 template = airspeed.Template('#if ( !$value )yes#end') 361 self.assertEquals('yes', template.merge({'value': None})) 339 362 340 363 def test_compound_binary_and_unary_operators(self):
