<s> __revision__ = "<STR_LIT>" <EOL> import sys <EOL> import unittest <EOL> import SCons . Errors <EOL> import SCons . Variables <EOL> class EnumVariableTestCase ( unittest . TestCase ) : <EOL> def test_EnumVariable ( self ) : <EOL> """<STR_LIT>""" <EOL> opts = SCons . Variables . Variables ( ) <EOL> opts . Add ( SCons . Variables . EnumVariable ( '<STR_LIT:test>' , '<STR_LIT>' , <NUM_LIT:0> , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> { } ) ) <EOL> o = opts . options [ <NUM_LIT:0> ] <EOL> assert o . key == '<STR_LIT:test>' , o . key <EOL> assert o . help == '<STR_LIT>' , o . help <EOL> assert o . default == <NUM_LIT:0> , o . default <EOL> assert not o . validator is None , o . validator <EOL> assert not o . converter is None , o . converter <EOL> def test_converter ( self ) : <EOL> """<STR_LIT>""" <EOL> opts = SCons . Variables . Variables ( ) <EOL> opts . Add ( SCons . Variables . EnumVariable ( '<STR_LIT:test>' , '<STR_LIT>' , <NUM_LIT:0> , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] ) ) <EOL> o = opts . options [ <NUM_LIT:0> ] <EOL> for a in [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] : <EOL> x = o . converter ( a ) <EOL> assert x == a , x <EOL> opts = SCons . Variables . Variables ( ) <EOL> opts . Add ( SCons . Variables . EnumVariable ( '<STR_LIT:test>' , '<STR_LIT>' , <NUM_LIT:0> , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> { '<STR_LIT:1>' : '<STR_LIT>' , <EOL> '<STR_LIT:2>' : '<STR_LIT>' , <EOL> '<STR_LIT:3>' : '<STR_LIT>' } ) ) <EOL> o = opts . options [ <NUM_LIT:0> ] <EOL> x = o . converter ( '<STR_LIT>' ) <EOL> assert x == '<STR_LIT>' , x <EOL> x = o . converter ( '<STR_LIT:1>' ) <EOL> assert x == '<STR_LIT>' , x <EOL> x = o . converter ( '<STR_LIT>' ) <EOL> assert x == '<STR_LIT>' , x <EOL> x = o . converter ( '<STR_LIT:2>' ) <EOL> assert x == '<STR_LIT>' , x <EOL> x = o . converter ( '<STR_LIT>' ) <EOL> assert x == '<STR_LIT>' , x <EOL> x = o . converter ( '<STR_LIT:3>' ) <EOL> assert x == '<STR_LIT>' , x <EOL> opts = SCons . Variables . Variables ( ) <EOL> opts . Add ( SCons . Variables . EnumVariable ( '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , <EOL> '<STR_LIT:b>' : '<STR_LIT>' , <EOL> '<STR_LIT:c>' : '<STR_LIT>' } , <EOL> ignorecase = <NUM_LIT:0> ) ) <EOL> opts . Add ( SCons . Variables . EnumVariable ( '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , <EOL> '<STR_LIT:b>' : '<STR_LIT>' , <EOL> '<STR_LIT:c>' : '<STR_LIT>' } , <EOL> ignorecase = <NUM_LIT:1> ) ) <EOL> opts . Add ( SCons . Variables . EnumVariable ( '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , <EOL> '<STR_LIT:b>' : '<STR_LIT>' , <EOL> '<STR_LIT:c>' : '<STR_LIT>' } , <EOL> ignorecase = <NUM_LIT:2> ) ) <EOL> o0 = opts . options [ <NUM_LIT:0> ] <EOL> o1 = opts . options [ <NUM_LIT:1> ] <EOL> o2 = opts . options [ <NUM_LIT:2> ] <EOL> table = { <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT:a>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT:A>' : [ '<STR_LIT:A>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT:b>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT:B>' : [ '<STR_LIT:B>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT:c>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT:C>' : [ '<STR_LIT:C>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> } <EOL> for k , l in table . items ( ) : <EOL> x = o0 . converter ( k ) <EOL> assert x == l [ <NUM_LIT:0> ] , "<STR_LIT>" % ( x , l [ <NUM_LIT:0> ] ) <EOL> x = o1 . converter ( k ) <EOL> assert x == l [ <NUM_LIT:1> ] , "<STR_LIT>" % ( x , l [ <NUM_LIT:1> ] ) <EOL> x = o2 . converter ( k ) <EOL> assert x == l [ <NUM_LIT:2> ] , "<STR_LIT>" % ( x , l [ <NUM_LIT:2> ] ) <EOL> def test_validator ( self ) : <EOL> """<STR_LIT>""" <EOL> opts = SCons . Variables . Variables ( ) <EOL> opts . Add ( SCons . Variables . EnumVariable ( '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , <EOL> '<STR_LIT:b>' : '<STR_LIT>' , <EOL> '<STR_LIT:c>' : '<STR_LIT>' } , <EOL> ignorecase = <NUM_LIT:0> ) ) <EOL> opts . Add ( SCons . Variables . EnumVariable ( '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , <EOL> '<STR_LIT:b>' : '<STR_LIT>' , <EOL> '<STR_LIT:c>' : '<STR_LIT>' } , <EOL> ignorecase = <NUM_LIT:1> ) ) <EOL> opts . Add ( SCons . Variables . EnumVariable ( '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:0> , <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , <EOL> '<STR_LIT:b>' : '<STR_LIT>' , <EOL> '<STR_LIT:c>' : '<STR_LIT>' } , <EOL> ignorecase = <NUM_LIT:2> ) ) <EOL> o0 = opts . options [ <NUM_LIT:0> ] <EOL> o1 = opts . options [ <NUM_LIT:1> ] <EOL> o2 = opts . options [ <NUM_LIT:2> ] <EOL> def valid ( o , v ) : <EOL> o . validator ( '<STR_LIT:X>' , v , { } ) <EOL> def invalid ( o , v ) : <EOL> caught = None <EOL> try : <EOL> o . validator ( '<STR_LIT:X>' , v , { } ) <EOL> except SCons . Errors . UserError : <EOL> caught = <NUM_LIT:1> <EOL> assert caught , "<STR_LIT>" % ( o . key , v ) <EOL> table = { <EOL> '<STR_LIT>' : [ valid , valid , valid ] , <EOL> '<STR_LIT>' : [ invalid , valid , valid ] , <EOL> '<STR_LIT>' : [ invalid , valid , valid ] , <EOL> '<STR_LIT>' : [ valid , valid , valid ] , <EOL> '<STR_LIT>' : [ invalid , valid , valid ] , <EOL> '<STR_LIT>' : [ invalid , valid , valid ] , <EOL> '<STR_LIT>' : [ valid , valid , valid ] , <EOL> '<STR_LIT>' : [ invalid , valid , valid ] , <EOL> '<STR_LIT>' : [ invalid , valid , valid ] , <EOL> '<STR_LIT:a>' : [ invalid , invalid , invalid ] , <EOL> '<STR_LIT:A>' : [ invalid , invalid , invalid ] , <EOL> '<STR_LIT:b>' : [ invalid , invalid , invalid ] , <EOL> '<STR_LIT:B>' : [ invalid , invalid , invalid ] , <EOL> '<STR_LIT:c>' : [ invalid , invalid , invalid ] , <EOL> '<STR_LIT:C>' : [ invalid , invalid , invalid ] , <EOL> '<STR_LIT>' : [ invalid , invalid , invalid ] , <EOL> } <EOL> for v , l in table . items ( ) : <EOL> l [ <NUM_LIT:0> ] ( o0 , v ) <EOL> l [ <NUM_LIT:1> ] ( o1 , v ) <EOL> l [ <NUM_LIT:2> ] ( o2 , v ) <EOL> if __name__ == "<STR_LIT:__main__>" : <EOL> suite = unittest . makeSuite ( EnumVariableTestCase , '<STR_LIT>' ) <EOL> if not unittest . TextTestRunner ( ) . run ( suite ) . wasSuccessful ( ) : <EOL> sys . exit ( <NUM_LIT:1> ) </s>
