Author: jprantan
Date: Mon Mar 30 23:51:29 2009
New Revision: 1599

Modified:
   trunk/src/robot/common/model.py
   trunk/utest/common/test_baseobjects.py

Log:
Initial implementation and unit tests for getting longname.

Modified: trunk/src/robot/common/model.py
==============================================================================
--- trunk/src/robot/common/model.py     (original)
+++ trunk/src/robot/common/model.py     Mon Mar 30 23:51:29 2009
@@ -23,6 +23,7 @@
 class _TestAndSuiteHelper:

     def __init__(self, name):
+        self.parent = None
         self.name = name
         self.setup = None
         self.teardown = None
@@ -35,7 +36,9 @@
                              % (self.__class__.__name__, name))

     def set_names(self, name=None, parent=None):
-        if name is not None:
+        if parent:
+            self.parent = parent
+        if name:
             self.name = name
         if parent is None:
             self.mediumname = self.longname = self.name
@@ -46,6 +49,15 @@
             mediumname_parts.append(self.name)
             self.mediumname = '.'.join(mediumname_parts)

+    def get_long_name(self, separator='.'):
+ """Returns long name. If separator is None, list of names is returned."""
+        names = [self.name]
+        if self.parent:
+            names = self.parent.get_long_name(None) + names
+        if separator:
+            return separator.join(names)
+        return names
+
     def _set_teardown_fail_msg(self, message):
         if self.message == '':
             self.message = message

Modified: trunk/utest/common/test_baseobjects.py
==============================================================================
--- trunk/utest/common/test_baseobjects.py      (original)
+++ trunk/utest/common/test_baseobjects.py      Mon Mar 30 23:51:29 2009
@@ -7,22 +7,54 @@

 from robot.common.model import BaseTestSuite, BaseTestCase, _Critical

+def _get_suite():
+    suite = BaseTestSuite('Root')
+    suite.suites = [ BaseTestSuite('Sub1'), BaseTestSuite('Sub2') ]
+ suite.suites[0].suites = [ BaseTestSuite('Sub11') , BaseTestSuite('Sub')]
+    suite.suites[0].suites[0].tests \
+            = [ BaseTestCase('T11'), BaseTestCase('T12') ]
+    suite.suites[0].suites[0].suites = [ BaseTestSuite('Sub') ]
+    suite.suites[0].suites[0].suites[0].tests = [ BaseTestCase('T') ]
+
+    suite.suites[0].suites[1].tests = [ BaseTestCase('T') ]
+    suite.suites[1].tests = [ BaseTestCase('T21') ]
+    suite.set_names()
+    return suite
+
+class TestGetLongName(unittest.TestCase):
+
+    def setUp(self):
+        self.suite = _get_suite()
+
+    def test_get_long_name_for_root_suite(self):
+        assert_equals(self.suite.get_long_name(), 'Root')
+
+    def test_get_long_name_for_sub_suite(self):
+        assert_equals(self.suite.suites[0].get_long_name(), 'Root.Sub1')
+
+    def test_get_long_name_for_sub_sub_suite(self):
+        assert_equals(self.suite.suites[0].suites[1].get_long_name(),
+                      'Root.Sub1.Sub')
+
+    def test_get_long_name_for_test(self):
+ assert_equals(self.suite.suites[0].suites[0].tests[0].get_long_name(),
+                      'Root.Sub1.Sub11.T11')
+
+    def test_get_long_name_for_test_with_non_default_separator(self):
+ assert_equals(self.suite.suites[0].suites[0].tests[0].get_long_name('|'),
+                      'Root|Sub1|Sub11|T11')
+
+    def test_get_long_name_for_sub_suite_with_parts(self):
+        assert_equals(self.suite.suites[0].get_long_name(None),
+                      ['Root', 'Sub1'])
+
+    def test_get_long_name_for_test_with_parts(self):
+ assert_equals(self.suite.suites[0].suites[0].tests[0].get_long_name(None),
+                      ['Root', 'Sub1', 'Sub11', 'T11'])
+

 class TestFilterByNames(unittest.TestCase):

-    def _get_suite(selff):
-        suite = BaseTestSuite('Root')
-        suite.suites = [ BaseTestSuite('Sub1'), BaseTestSuite('Sub2') ]
- suite.suites[0].suites = [ BaseTestSuite('Sub11') , BaseTestSuite('Sub')]
-        suite.suites[0].suites[0].tests \
-                = [ BaseTestCase('T11'), BaseTestCase('T12') ]
-        suite.suites[0].suites[0].suites = [ BaseTestSuite('Sub') ]
-        suite.suites[0].suites[0].suites[0].tests = [ BaseTestCase('T') ]
-
-        suite.suites[0].suites[1].tests = [ BaseTestCase('T') ]
-        suite.suites[1].tests = [ BaseTestCase('T21') ]
-        suite.set_names()
-        return suite

     def test_with_suites(self):
         for names, count in [ (['Root'], 5),
@@ -35,12 +67,12 @@
                               (['Sub2','Nonex'], 1),
                               (['Sub11.Sub'], 1),
                               (['Root.Sub1.Sub'], 1)]:
-            suite = self._get_suite()
+            suite = _get_suite()
             suite.filter_by_names(names, [])
             assert_equals(suite.get_test_count(), count, names)

     def test_with_suites_no_matches(self):
-        suite = self._get_suite()
+        suite = _get_suite()
         err =  "Suite 'Root' contains no test suites named '%s'."
         assert_raises_with_msg(DataError, err % ('nonex'),
                                suite.filter_by_names, ['nonex'], [])
@@ -55,12 +87,12 @@
                               (['??1'], 2),
                               (['T11','T12'], 2),
                               (['Nonex','T21','Nonex2'], 1) ]:
-            suite = self._get_suite()
+            suite = _get_suite()
             suite.filter_by_names([], names)
             assert_equals(suite.get_test_count(), count)

     def test_with_tests_no_matches(self):
-        suite = self._get_suite()
+        suite = _get_suite()
         err =  "Suite 'Root' contains no test cases named 'x', 'y' or 'z'."
assert_raises_with_msg(DataError, err, suite.filter_by_names, [], ['x','y','z'])

@@ -72,12 +104,12 @@
                                       (['sub?'], ['t11','t21'], 2),
                                       (['ROOT','nonex'], ['t11','t21'], 2),
                                       (['*'], ['t*'], 5) ]:
-            suite = self._get_suite()
+            suite = _get_suite()
             suite.filter_by_names(suites, tests)
assert_equals(suite.get_test_count(), count, '%s & %s'%(suites,tests))

     def test_with_suites_and_tests_no_matches(self):
-        suite = self._get_suite()
+        suite = _get_suite()
         for suites, tests in [ (['Root'], ['nonex']),
                                (['Nonex'], ['T1.1']),
                                (['Sub2'], ['T1.1']), ]:

Reply via email to