Revision: 3290
Author: pekka.klarck
Date: Mon May 17 02:46:19 2010
Log: use name/args and other descriptive attributes instead of generic value with fixtures and timeouts settings
http://code.google.com/p/robotframework/source/detail?r=3290

Modified:
 /trunk/src/robot/parsing/newmodel.py
 /trunk/utest/parsing/test_model.py

=======================================
--- /trunk/src/robot/parsing/newmodel.py        Wed May 12 07:49:09 2010
+++ /trunk/src/robot/parsing/newmodel.py        Mon May 17 02:46:19 2010
@@ -38,6 +38,7 @@
     def edited(self):
         return False

+
 class SettingTable(DataTable):

     def __init__(self):
@@ -74,6 +75,7 @@
     def edited(self):
         return any(setting.edited() for setting in self)

+
 class VariableTable(DataTable):

     def __init__(self):
@@ -82,6 +84,7 @@
     def add(self, name, value):
         self.variables.append(Variable(name, value))

+
 class TestCaseTable(DataTable):

     def __init__(self):
@@ -91,6 +94,7 @@
         self.tests.append(TestCase(name))
         return self.tests[-1]

+
 class KeywordTable(DataTable):

     def __init__(self):
@@ -115,6 +119,7 @@
     def _string_value(self, value):
         return value if isinstance(value, basestring) else ' '.join(value)

+
 class Documentation(Setting):

     def __init__(self):
@@ -123,38 +128,68 @@
     def set(self, value):
         self.value = self._string_value(value)

+
 class Fixture(Setting):
-    pass
-
-class Metadata(Setting):
-
-    def __init__(self, name, value):
-        self.name = name
-        self.value = self._string_value(value)
+
+    def __init__(self):
+        self.name = None
+        self.args = []
+
+    def set(self, value):
+        self.name = value[0] if value else ''
+        self.args = value[1:]
+
+    def edited(self):
+        return self.name is not None
+

 class Timeout(Setting):
-    pass
+
+    def __init__(self):
+        self.value = None
+        self.message = ''
+
+    def set(self, value):
+        self.value = value[0] if value else ''
+        self.message = ' '.join(value[1:])
+
+    def edited(self):
+        return self.value is not None
+

 class Tags(Setting):
     pass

+
 class Arguments(Setting):
     pass

+
 class Return(Setting):
     pass

+
+class Metadata(Setting):
+
+    def __init__(self, name, value):
+        self.name = name
+        self.value = self._string_value(value)
+
+
 class Import(Setting):

     def __init__(self, value):
         self.value = value

+
 class Library(Import):
     pass

+
 class Resource(Import):
     pass

+
 class Variables(Import):
     pass

=======================================
--- /trunk/utest/parsing/test_model.py  Wed May 12 07:49:09 2010
+++ /trunk/utest/parsing/test_model.py  Mon May 17 02:46:19 2010
@@ -39,7 +39,7 @@
         assert_equal(self.table.metadata, [])
         assert_equal(self.table.imports, [])

-    def test_empty_doc(self):
+    def test_doc_default(self):
         assert_equal(self.table.doc.value, '')

     def test_set_doc_with_string(self):
@@ -50,6 +50,38 @@
         self.table.doc.set(['hello', 'world'])
         assert_equal(self.table.doc.value, 'hello world')

+    def test_fixture_default(self):
+        assert_equal(self.table.suite_setup.name, None)
+        assert_equal(self.table.suite_setup.args, [])
+        assert_false(hasattr(self.table.suite_setup, 'value'))
+
+    def test_set_fixture(self):
+        self.table.suite_teardown.set(['Name', 'a1', 'a2'])
+        assert_equal(self.table.suite_teardown.name, 'Name')
+        assert_equal(self.table.suite_teardown.args, ['a1', 'a2'])
+        assert_false(hasattr(self.table.suite_teardown, 'value'))
+
+    def test_set_fixture_with_empty_value(self):
+        self.table.test_teardown.set([])
+        assert_equal(self.table.test_teardown.name, '')
+        assert_equal(self.table.test_teardown.args, [])
+
+    def test_timeout_default(self):
+        assert_equal(self.table.test_timeout.value, None)
+        assert_equal(self.table.test_timeout.message, '')
+        assert_false(hasattr(self.table.suite_setup, 'value'))
+
+    def test_set_timeout(self):
+        self.table.test_timeout.set(['1s', 'msg', 'in multiple', 'cell'])
+        assert_equal(self.table.test_timeout.value, '1s')
+ assert_equal(self.table.test_timeout.message, 'msg in multiple cell')
+        assert_false(hasattr(self.table.suite_teardown, 'value'))
+
+    def test_set_timeout_with_empty_value(self):
+        self.table.test_timeout.set([])
+        assert_equal(self.table.test_timeout.value, '')
+        assert_equal(self.table.test_timeout.message, '')
+
     def test_metadata(self):
         self.table.add_metadata('Foo', 'bar')
         self.table.add_metadata('boo', ['f', 'a', 'r'])

Reply via email to