"""these tests are here to create some :class:`tiramisu.option.Option`'s and to compare them """ from .autopath import do_autopath do_autopath() from py.test import raises from tiramisu.error import APIError from tiramisu import IntOption, OptionDescription, Config, getapi def a_func(): return None def test_option_valid_name(): IntOption('test', '') raises(ValueError, 'IntOption(1, "")') raises(ValueError, 'IntOption("1test", "")') IntOption("test1", "") raises(ValueError, 'IntOption("impl_test", "")') raises(ValueError, 'IntOption("_test", "")') raises(ValueError, 'IntOption(" ", "")') def test_option_with_callback(): #no default value with callback raises(ValueError, "IntOption('test', '', default=1, callback=a_func)") def test_option_get_information(): description = "it's ok" string = 'some informations' i = IntOption('test', description) raises(ValueError, "i.impl_get_information('noinfo')") i.impl_set_information('info', string) assert i.impl_get_information('info') == string raises(ValueError, "i.impl_get_information('noinfo')") assert i.impl_get_information('noinfo', 'default') == 'default' assert i.impl_get_information('doc') == description assert i.impl_getdoc() == description def test_option_get_information_config(): description = "it's ok" string = 'some informations' string i = IntOption('test', description) od = OptionDescription('od', '', [i]) Config(od) raises(ValueError, "i.impl_get_information('noinfo')") raises(AttributeError, "i.impl_set_information('info', string)") # assert i.impl_get_information('info') == string raises(ValueError, "i.impl_get_information('noinfo')") assert i.impl_get_information('noinfo', 'default') == 'default' assert i.impl_get_information('doc') == description assert i.impl_getdoc() == description def test_option_get_information_config2(): description = "it's ok" string = 'some informations' i = IntOption('test', description) i.impl_set_information('info', string) od = OptionDescription('od', '', [i]) Config(od) raises(ValueError, "i.impl_get_information('noinfo')") raises(AttributeError, "i.impl_set_information('info', 'hello')") assert i.impl_get_information('info') == string raises(ValueError, "i.impl_get_information('noinfo')") assert i.impl_get_information('noinfo', 'default') == 'default' assert i.impl_get_information('doc') == description assert i.impl_getdoc() == description def test_optiondescription_get_information(): description = "it's ok" string = 'some informations' o = OptionDescription('test', description, []) o.impl_set_information('info', string) assert o.impl_get_information('info') == string raises(ValueError, "o.impl_get_information('noinfo')") assert o.impl_get_information('noinfo', 'default') == 'default' assert o.impl_get_information('doc') == description assert o.impl_getdoc() == description def test_option_multi(): IntOption('test', '', multi=True) IntOption('test', '', multi=True, default_multi=1) IntOption('test', '', default=[1], multi=True, default_multi=1) #add default_multi to not multi's option raises(ValueError, "IntOption('test', '', default_multi=1)") #unvalid default_multi raises(ValueError, "IntOption('test', '', multi=True, default_multi='yes')") #not default_multi with callback raises(ValueError, "IntOption('test', '', multi=True, default_multi=1, callback=a_func)") def test_unknown_option(): i = IntOption('test', '') od1 = OptionDescription('od', '', [i]) od2 = OptionDescription('od', '', [od1]) api = getapi(Config(od2)) # test is an option, not an optiondescription raises(AttributeError, "api.option('od.test.unknown').value.get()") # unknown is an unknown option raises(AttributeError, "api.option('unknown').value.get()") # unknown is an unknown option raises(AttributeError, "api.option('od.unknown').value.get()") # unknown is an unknown optiondescription raises(AttributeError, "api.option('od.unknown.suboption').value.get()") def test_asign_optiondescription(): i = IntOption('test', '') od1 = OptionDescription('od', '', [i]) od2 = OptionDescription('od', '', [od1]) api = getapi(Config(od2)) raises(APIError, "api.option('od').value.set('test')") raises(APIError, "api.option('od').value.reset()")