[autotest] Simplify _to_kwargs implementation

BUG=None
TEST=Run unittests

Change-Id: I9c5d03b7693d4cfbb9c6213b42ba252c75c595f5
Reviewed-on: https://chromium-review.googlesource.com/419087
Commit-Ready: Allen Li <ayatane@chromium.org>
Tested-by: Allen Li <ayatane@chromium.org>
Reviewed-by: Allen Li <ayatane@chromium.org>
diff --git a/frontend/afe/rpc_utils_unittest.py b/frontend/afe/rpc_utils_unittest.py
index 83d6f16..5a64f42 100755
--- a/frontend/afe/rpc_utils_unittest.py
+++ b/frontend/afe/rpc_utils_unittest.py
@@ -39,5 +39,53 @@
         self.assertFalse(rpc_utils._check_is_server_test('InvalidType'))
 
 
+class ConvertToKwargsOnlyTest(unittest.TestCase):
+    """Unit tests for _convert_to_kwargs_only()."""
+
+    # pylint: disable=unused-argument,missing-docstring
+
+    def test_no_kwargs_in_spec(self):
+        """Test with function without kwargs."""
+        def func(a, b):
+            pass
+        got = rpc_utils._convert_to_kwargs_only(func, (1, 2), {})
+        self.assertEquals(got, {'a': 1, 'b': 2})
+
+    def test_pass_by_keyword(self):
+        """Test passing required args by keyword."""
+        def func(a, b):
+            pass
+        got = rpc_utils._convert_to_kwargs_only(func, (), {'a': 1, 'b': 2})
+        self.assertEquals(got, {'a': 1, 'b': 2})
+
+    def test_with_kwargs(self):
+        """Test with custom keyword arg."""
+        def func(a, b, **kwargs):
+            pass
+        got = rpc_utils._convert_to_kwargs_only(func, (1, 2), {'c': 3})
+        self.assertEquals(got, {'a': 1, 'b': 2, 'c': 3})
+
+    def test_with_kwargs_pass_by_keyword(self):
+        """Test passing required parameter by keyword."""
+        def func(a, b, **kwargs):
+            pass
+        got = rpc_utils._convert_to_kwargs_only(func, (1,), {'b': 2, 'c': 3})
+        self.assertEquals(got, {'a': 1, 'b': 2, 'c': 3})
+
+    def test_empty_kwargs(self):
+        """Test without passing kwargs."""
+        def func(a, b, **kwargs):
+            pass
+        got = rpc_utils._convert_to_kwargs_only(func, (1, 2), {})
+        self.assertEquals(got, {'a': 1, 'b': 2})
+
+    def test_with_varargs(self):
+        """Test against vararg function."""
+        def func(a, b, *args):
+            pass
+        got = rpc_utils._convert_to_kwargs_only(func, (1, 2, 3), {})
+        self.assertEquals(got, {'a': 1, 'b': 2, 'args': (3,)})
+
+
 if __name__ == '__main__':
     unittest.main()