support multi requires with inverse set to True
[tiramisu.git] / test / test_requires.py
index cfad1c3..309a3fd 100644 (file)
@@ -2,7 +2,7 @@
 import autopath
 from tiramisu import setting
 setting.expires_time = 1
-from tiramisu.option import IPOption, OptionDescription, BoolOption
+from tiramisu.option import IPOption, OptionDescription, BoolOption, IntOption
 from tiramisu.config import Config
 from tiramisu.error import PropertiesOptionError, RequirementError
 from py.test import raises
@@ -179,3 +179,85 @@ def test_requires_None():
     assert props == ['disabled']
     c.activate_service = False
     c.ip_address_service
+
+
+def test_requires_multi_disabled():
+    a = BoolOption('activate_service', '')
+    b = IntOption('num_service', '')
+    c = IPOption('ip_address_service', '',
+                 requires=[(a, True, 'disabled'), (b, 1, 'disabled')])
+    od = OptionDescription('service', '', [a, b, c])
+    c = Config(od)
+    c.read_write()
+
+    c.ip_address_service
+
+    c.activate_service = True
+    props = []
+    try:
+        c.ip_address_service
+    except PropertiesOptionError, err:
+        props = err.proptype
+    assert props == ['disabled']
+
+    c.activate_service = False
+    c.ip_address_service
+
+    c.num_service = 1
+    props = []
+    try:
+        c.ip_address_service
+    except PropertiesOptionError, err:
+        props = err.proptype
+    assert props == ['disabled']
+
+    c.activate_service = True
+    props = []
+    try:
+        c.ip_address_service
+    except PropertiesOptionError, err:
+        props = err.proptype
+    assert props == ['disabled']
+
+def test_requires_multi_disabled_inverse():
+    a = BoolOption('activate_service', '')
+    b = IntOption('num_service', '')
+    c = IPOption('ip_address_service', '',
+                 requires=[(a, True, 'disabled', True), (b, 1, 'disabled', True)])
+    od = OptionDescription('service', '', [a, b, c])
+    c = Config(od)
+    c.read_write()
+
+    props = []
+    try:
+        c.ip_address_service
+    except PropertiesOptionError, err:
+        props = err.proptype
+    assert props == ['disabled']
+
+    c.activate_service = True
+    props = []
+    try:
+        c.ip_address_service
+    except PropertiesOptionError, err:
+        props = err.proptype
+    assert props == ['disabled']
+
+    c.activate_service = False
+    props = []
+    try:
+        c.ip_address_service
+    except PropertiesOptionError, err:
+        props = err.proptype
+    assert props == ['disabled']
+
+    c.num_service = 1
+    props = []
+    try:
+        c.ip_address_service
+    except PropertiesOptionError, err:
+        props = err.proptype
+    assert props == ['disabled']
+
+    c.activate_service = True
+    c.ip_address_service