| Index: mojo/python/tests/messaging_unittest.py
|
| diff --git a/mojo/python/tests/messaging_unittest.py b/mojo/python/tests/messaging_unittest.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c67048b750af37871be82614591a9a91d434a8db
|
| --- /dev/null
|
| +++ b/mojo/python/tests/messaging_unittest.py
|
| @@ -0,0 +1,81 @@
|
| +# 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 unittest
|
| +
|
| +# pylint: disable=F0401
|
| +import mojo.embedder
|
| +from mojo.bindings import messaging
|
| +from mojo import system
|
| +
|
| +
|
| +class _ForwardingMessageReceiver(messaging.MessageReceiver):
|
| +
|
| + def __init__(self, callback):
|
| + self._callback = callback
|
| +
|
| + def Accept(self, message):
|
| + self._callback(message)
|
| + return True
|
| +
|
| +
|
| +class _ForwardingConnectionErrorHandler(messaging.ConnectionErrorHandler):
|
| +
|
| + def __init__(self, callback):
|
| + self._callback = callback
|
| +
|
| + def OnError(self, result):
|
| + self._callback(result)
|
| +
|
| +
|
| +class MessagingTest(unittest.TestCase):
|
| +
|
| + def setUp(self):
|
| + mojo.embedder.Init()
|
| + self.loop = system.RunLoop()
|
| + self.received_messages = []
|
| + self.received_errors = []
|
| + def _OnMessage(message):
|
| + self.received_messages.append(message)
|
| + def _OnError(result):
|
| + self.received_errors.append(result)
|
| + handles = system.MessagePipe()
|
| + self.connector = messaging.Connector(handles.handle1)
|
| + self.connector.SetIncomingMessageReceiver(
|
| + _ForwardingMessageReceiver(_OnMessage))
|
| + self.connector.SetErrorHandler(
|
| + _ForwardingConnectionErrorHandler(_OnError))
|
| + self.connector.Start()
|
| + self.handle = handles.handle0
|
| +
|
| +
|
| + def tearDown(self):
|
| + self.connector = None
|
| + self.handle = None
|
| + self.loop = None
|
| +
|
| + def testConnectorRead(self):
|
| + self.handle.WriteMessage()
|
| + self.loop.RunUntilIdle()
|
| + self.assertTrue(self.received_messages)
|
| + self.assertFalse(self.received_errors)
|
| +
|
| + def testConnectorWrite(self):
|
| + self.connector.Accept(messaging.Message())
|
| + (result, _, _) = self.handle.ReadMessage()
|
| + self.assertEquals(result, system.RESULT_OK)
|
| + self.assertFalse(self.received_errors)
|
| +
|
| + def testConnectorCloseRemoteHandle(self):
|
| + self.handle.Close()
|
| + self.loop.RunUntilIdle()
|
| + self.assertFalse(self.received_messages)
|
| + self.assertTrue(self.received_errors)
|
| + self.assertEquals(self.received_errors[0],
|
| + system.RESULT_FAILED_PRECONDITION)
|
| +
|
| + def testConnectorDeleteConnector(self):
|
| + self.connector = None
|
| + (result, _, _) = self.handle.ReadMessage()
|
| + self.assertEquals(result, system.RESULT_FAILED_PRECONDITION)
|
|
|