Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1625)

Unified Diff: mojo/python/tests/validation_unittest.py

Issue 761553003: Add validation tests to python bindings. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Follow review Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/python/tests/mojo_unittest.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/python/tests/validation_unittest.py
diff --git a/mojo/python/tests/validation_unittest.py b/mojo/python/tests/validation_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..753ff521598c2860695f36470cd8a708d00049d2
--- /dev/null
+++ b/mojo/python/tests/validation_unittest.py
@@ -0,0 +1,85 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import logging
+import os
+import os.path
+
+import mojo_unittest
+import validation_test_interfaces_mojom
+
+# pylint: disable=E0611
+from mojo import system
+from mojo.bindings import messaging
+from mojo.tests import validation_util
+from mopy.paths import Paths
+
+logging.basicConfig(level=logging.ERROR)
+paths = Paths()
+
+
+class RoutingMessageReceiver(messaging.MessageReceiver):
+ def __init__(self, request, response):
+ self.request = request
+ self.response = response
+
+ def Accept(self, message):
+ if message.header.is_response:
+ return self.response.Accept(message)
+ else:
+ return self.request.Accept(message)
+
+
+class SinkMessageReceiver(messaging.MessageReceiverWithResponder):
+
+ def Accept(self, message):
+ return False
+
+ def AcceptWithResponder(self, message, responder):
+ return False
+
+ def Close(self):
+ pass
+
+
+class HandleMock(object):
+ def IsValid(self):
+ return True
+
+ def Close(self):
+ pass
+
+
+class ValidationTest(mojo_unittest.MojoTestCase):
+
+ @staticmethod
+ def ParseData(data_dir, filename):
+ data = validation_util.ParseData(
+ open(os.path.join(data_dir, filename), 'r').read())
+ expect_file = filename[:-4] + 'expected'
+ expected_error = open(
+ os.path.join(data_dir, expect_file), 'r').read().strip();
+ success = expected_error == 'PASS'
+ return (filename, data, success)
+
+ @staticmethod
+ def GetData(prefix):
+ data_dir = os.path.join(paths.src_root, 'mojo', 'public', 'interfaces',
+ 'bindings', 'tests', 'data', 'validation')
+ return [ValidationTest.ParseData(data_dir, x) for x in os.listdir(data_dir)
+ if x.startswith(prefix) and x.endswith('.data')]
+
+ def runTest(self, prefix, message_receiver):
+ for (filename, data, expected) in ValidationTest.GetData(prefix):
+ self.assertEquals(len(data.error_message), 0)
+ handles = [HandleMock() for _ in xrange(data.num_handles)]
+ message = messaging.Message(data.data, handles)
+ self.assertEquals(message_receiver.Accept(message), expected,
+ 'Unexpected result for test: %s' % filename)
+
+ def testConformance(self):
+ manager = validation_test_interfaces_mojom.ConformanceTestInterface.manager
+ proxy = manager._InternalProxy(SinkMessageReceiver(), None)
+ stub = manager._Stub(proxy)
+ self.runTest('conformance_', stub)
« no previous file with comments | « mojo/python/tests/mojo_unittest.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698