Revision: 2845
Author: KariHusa
Date: Wed Apr  7 02:16:43 2010
Log: Added unit tests
http://code.google.com/p/robotframework/source/detail?r=2845

Modified:
 /trunk/utest/running/test_userhandlers.py

=======================================
--- /trunk/utest/running/test_userhandlers.py   Tue Aug  4 06:36:09 2009
+++ /trunk/utest/running/test_userhandlers.py   Wed Apr  7 02:16:43 2010
@@ -1,7 +1,7 @@
 import unittest

 from robot.running.userkeyword import UserHandler, EmbeddedArgsTemplate, \
-        EmbeddedArgs
+        EmbeddedArgs, UserKeywordArguments
 from robot.utils.asserts import *


@@ -99,5 +99,93 @@
             assert_true(hasattr(embedded, attr), "'%s' missing" % attr)


+class _FakeVariables(dict):
+    replace_list = lambda self, args: args
+
+
+class TestSettingUserKeywordArguments(unittest.TestCase):
+
+    def setUp(self):
+        self.variables = _FakeVariables()
+
+    def test_noargs(self):
+ ukargs = UserKeywordArguments(argnames=[], defaults=[], vararg=None)
+        ukargs.set_to(self.variables, [])
+        self._assert_variables({})
+
+    def test_single_scalar(self):
+        self._arguments_for(['${foo}']).set_to(self.variables, ['bar'])
+        self._assert_variables({'${foo}': 'bar'})
+
+    def test_multiple_scalars(self):
+        self._arguments_for(['${foo}', '${bar}']).set_to(self.variables,
+                                                         ['bar', 'quux'])
+        self._assert_variables({'${foo}': 'bar', '${bar}': 'quux'})
+        self._arguments_for(['${foo}', '${bar}']).set_to(self.variables,
+ ['hevonen', 'foox'])
+        self._assert_variables({'${foo}': 'hevonen', '${bar}': 'foox'})
+
+    def test_default_values(self):
+        self._arguments_for(['${foo}', '${bar}'],
+                            ('bar', 'quux')).set_to(self.variables, [])
+        self._assert_variables({'${foo}': 'bar', '${bar}': 'quux'})
+ self._arguments_for(['${foo}', '${bar}'], ('bar',)).set_to(self.variables, + ['kameli'])
+        self._assert_variables({'${foo}': 'kameli', '${bar}': 'bar'})
+
+    def test_varargs(self):
+ self._arguments_for([], vararg='@{helmet}').set_to(self.variables, [])
+        self._assert_variables({'@{helmet}': []})
+        self._arguments_for([], vararg='@{helmet}').set_to(self.variables,
+ ['kameli', 'hevonen'])
+        self._assert_variables({'@{helmet}': ['kameli', 'hevonen']})
+
+    def test_scalar_and_vararg(self):
+ self._arguments_for(['${mand}'], vararg='@{varg}').set_to(self.variables, ['muuli'])
+        self._assert_variables({'${mand}': 'muuli', '@{varg}': []})
+
+    def test_kwargs(self):
+        self._arguments_for(['${foo}']).set_to(self.variables, ['foo=bar'])
+        self._assert_variables({'${foo}': 'bar'})
+        self._arguments_for(['${foo}', '${bar}']).set_to(self.variables,
+ ['bar=quux', 'foo=bar'])
+        self._assert_variables({'${foo}': 'bar', '${bar}': 'quux'})
+
+    def test_kwargs_and_defaults(self):
+ self._arguments_for(['${a}', '${b}'], ('foo', 'b')).set_to(self.variables, + ['b=bar'])
+        self._assert_variables({'${a}': 'foo', '${b}': 'bar'})
+ args = self._arguments_for(['${a}', '${b}', '${c}'], ('a', 'b', 'c'))
+        args.set_to(self.variables, ['a=foo', 'd', 'c=quux'])
+ self._assert_variables({'${a}': 'a=foo', '${b}': 'd', '${c}': 'quux'})
+
+    def test_kwargs_and_vararg(self):
+        args = self._arguments_for(['${foo}', '${bar}'], vararg='@{list}')
+ args.set_to(self.variables, ['bar=quux', 'foo=bar', 'hevonen', 'aasi'])
+        self._assert_variables({'${foo}': 'bar', '${bar}': 'quux',
+                                '@{list}': ['hevonen', 'aasi']})
+
+    def test_defaults_kwargs_and_vararg(self):
+ args = self._arguments_for(['${foo}', '${bar}'], ('jotain',), '@{list}') + args.set_to(self.variables, ['bar=quux', 'foo=bar', 'hevonen', 'aasi'])
+        self._assert_variables({'${foo}': 'bar', '${bar}': 'quux',
+                                '@{list}': ['hevonen', 'aasi']})
+ args = self._arguments_for(['${foo}', '${bar}'], ('jotain',), '@{list}')
+        args.set_to(self.variables, ['quux', 'bar', 'hevonen', 'aasi'])
+        self._assert_variables({'${foo}': 'quux', '${bar}': 'bar',
+                                '@{list}': ['hevonen', 'aasi']})
+
+ args = self._arguments_for(['${foo}', '${bar}'], ('jotain',), '@{list}')
+        args.set_to(self.variables, ['aasi'])
+        self._assert_variables({'${foo}': 'aasi', '${bar}': 'jotain',
+                                '@{list}': []})
+
+    def _arguments_for(self, argnames, defaults=(), vararg=None):
+        return UserKeywordArguments(argnames, defaults, vararg)
+
+    def _assert_variables(self, expected):
+        assert_equals(self.variables, expected)
+
+
 if __name__ == '__main__':
     unittest.main()


--
To unsubscribe, reply using "remove me" as the subject.

Reply via email to