Changeset 49 for trunk/airspeed_test.py

Show
Ignore:
Timestamp:
22/09/05 09:40:35 (6 years ago)
Author:
steve
Message:

Ensure that None is interpreted as False in conditionals and binary logical expressions

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/airspeed_test.py

    r48 r49  
    8686        namespace["is_birthday"] = True 
    8787        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})) 
    8893 
    8994    def test_new_lines_in_templates_are_permitted(self): 
     
    314319        self.assertEquals('yes', template.merge({'value1': False, 'value2': True})) 
    315320 
     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 
    316328    def test_and_operator(self): 
    317329        template = airspeed.Template('#if ( $value1 && $value2 )yes#end') 
     
    321333        self.assertEquals('yes', template.merge({'value1': True, 'value2': True})) 
    322334 
     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 
    323342    def test_parenthesised_value(self): 
    324343        template = airspeed.Template('#if ( ($value1 == 1) && ($value2 == 2) )yes#end') 
     
    337356        self.assertEquals('yes', template.merge({'value': False})) 
    338357        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})) 
    339362 
    340363    def test_compound_binary_and_unary_operators(self):