diff --git a/test/test_requires.py b/test/test_requires.py index 609b3d6..d5124d4 100644 --- a/test/test_requires.py +++ b/test/test_requires.py @@ -1210,3 +1210,118 @@ def test_leadership_requires_complet(): del dico['options.unicode.unicode6'] del dico['options.unicode.unicode7'][1] del dico['options.unicode.unicode7'] + + +def test_leadership_requires_transitive(): + optiontoto = StrOption('unicodetoto', "Unicode leader") + option = StrOption('unicode', "Unicode leader", multi=True) + option1 = StrOption('unicode1', "Unicode follower 1", multi=True) + option2 = StrOption('unicode2', "Unicode follower 2", requires=[{'option': optiontoto, + 'expected': u'test', + 'action': 'disabled', + 'transitive': True, + 'inverse': True}], + multi=True) + option3 = StrOption('unicode3', "Unicode follower 3", requires=[{'option': option2, + 'expected': u'test', + 'action': 'disabled', + 'transitive': True, + 'inverse': True}], + multi=True) + option4 = StrOption('unicode4', "Unicode follower 4", requires=[{'option': option3, + 'expected': u'test', + 'action': 'disabled', + 'transitive': True, + 'inverse': True}], + multi=True) + descr1 = Leadership("unicode", "Common configuration 1", + [option, option1, option2, option3, option4]) + descr = OptionDescription("options", "Common configuration 2", [descr1, optiontoto]) + descr = OptionDescription("unicode1", "", [descr]) + config = Config(descr) + config.property.read_write() + assert config.value.dict() == {'options.unicode.unicode': [], 'options.unicode.unicode1': [], 'options.unicode.unicode3': [], 'options.unicode.unicode4': [], 'options.unicodetoto': None} + # + config.option('options.unicodetoto').value.set('test') + assert config.value.dict() == {'options.unicode.unicode': [], 'options.unicode.unicode1': [], 'options.unicode.unicode2': [], 'options.unicode.unicode3': [], 'options.unicode.unicode4': [], 'options.unicodetoto': 'test'} + # + config.option('options.unicode.unicode').value.set(['a', 'b', 'c']) + dico = config.value.dict() + assert list(dico.keys()) == ['options.unicode.unicode', 'options.unicode.unicode1', 'options.unicode.unicode2', 'options.unicode.unicode3', 'options.unicode.unicode4', 'options.unicodetoto'] + assert dico['options.unicodetoto'] == 'test' + assert dico['options.unicode.unicode'] == ['a', 'b', 'c'] + assert dico['options.unicode.unicode1'] == [None, None, None] + assert dico['options.unicode.unicode2'] == [None, None, None] + assert isinstance(dico['options.unicode.unicode3'][0], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode3'][1], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode3'][2], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][0], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][1], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][2], PropertiesOptionError) + del (dico['options.unicode.unicode3'][2]) + del (dico['options.unicode.unicode3'][1]) + del (dico['options.unicode.unicode3'][0]) + del (dico['options.unicode.unicode4'][2]) + del (dico['options.unicode.unicode4'][1]) + del (dico['options.unicode.unicode4'][0]) + # + config.option('options.unicode.unicode2', 1).value.set('test') + config.option('options.unicode.unicode3', 1).value.set('test') + dico = config.value.dict() + assert list(dico.keys()) == ['options.unicode.unicode', 'options.unicode.unicode1', 'options.unicode.unicode2', 'options.unicode.unicode3', 'options.unicode.unicode4', 'options.unicodetoto'] + assert dico['options.unicodetoto'] == 'test' + assert dico['options.unicode.unicode'] == ['a', 'b', 'c'] + assert dico['options.unicode.unicode1'] == [None, None, None] + assert dico['options.unicode.unicode2'] == [None, 'test', None] + assert isinstance(dico['options.unicode.unicode3'][0], PropertiesOptionError) + assert dico['options.unicode.unicode3'][1] == 'test' + assert isinstance(dico['options.unicode.unicode3'][2], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][0], PropertiesOptionError) + assert dico['options.unicode.unicode4'][1] == None + assert isinstance(dico['options.unicode.unicode4'][2], PropertiesOptionError) + del (dico['options.unicode.unicode3'][2]) + del (dico['options.unicode.unicode3'][1]) + del (dico['options.unicode.unicode3'][0]) + del (dico['options.unicode.unicode4'][2]) + del (dico['options.unicode.unicode4'][1]) + del (dico['options.unicode.unicode4'][0]) + # + config.option('options.unicode.unicode2', 1).value.set('rah') + dico = config.value.dict() + assert list(dico.keys()) == ['options.unicode.unicode', 'options.unicode.unicode1', 'options.unicode.unicode2', 'options.unicode.unicode3', 'options.unicode.unicode4', 'options.unicodetoto'] + assert dico['options.unicodetoto'] == 'test' + assert dico['options.unicode.unicode'] == ['a', 'b', 'c'] + assert dico['options.unicode.unicode1'] == [None, None, None] + assert dico['options.unicode.unicode2'] == [None, 'rah', None] + assert isinstance(dico['options.unicode.unicode3'][0], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode3'][1], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode3'][2], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][0], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][1], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][2], PropertiesOptionError) + del (dico['options.unicode.unicode3'][2]) + del (dico['options.unicode.unicode3'][1]) + del (dico['options.unicode.unicode3'][0]) + del (dico['options.unicode.unicode4'][2]) + del (dico['options.unicode.unicode4'][1]) + del (dico['options.unicode.unicode4'][0]) + # + config.option('options.unicode.unicode2', 1).value.set('test') + config.option('options.unicodetoto').value.set('rah') + dico = config.value.dict() + assert list(dico.keys()) == ['options.unicode.unicode', 'options.unicode.unicode1', 'options.unicode.unicode3', 'options.unicode.unicode4', 'options.unicodetoto'] + assert dico['options.unicodetoto'] == 'rah' + assert dico['options.unicode.unicode'] == ['a', 'b', 'c'] + assert dico['options.unicode.unicode1'] == [None, None, None] + assert isinstance(dico['options.unicode.unicode3'][0], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode3'][1], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode3'][2], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][0], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][1], PropertiesOptionError) + assert isinstance(dico['options.unicode.unicode4'][2], PropertiesOptionError) + del (dico['options.unicode.unicode3'][2]) + del (dico['options.unicode.unicode3'][1]) + del (dico['options.unicode.unicode3'][0]) + del (dico['options.unicode.unicode4'][2]) + del (dico['options.unicode.unicode4'][1]) + del (dico['options.unicode.unicode4'][0])