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

Side by Side Diff: mojo/python/tests/messaging_unittest.py

Issue 594203002: mojo: Add connector to python bindings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Follow review Created 6 years, 2 months 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 unified diff | Download patch
« no previous file with comments | « mojo/public/python/mojo/bindings/messaging.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import unittest
6
7 # pylint: disable=F0401
8 import mojo.embedder
9 from mojo.bindings import messaging
10 from mojo import system
11
12
13 class _ForwardingMessageReceiver(messaging.MessageReceiver):
14
15 def __init__(self, callback):
16 self._callback = callback
17
18 def Accept(self, message):
19 self._callback(message)
20 return True
21
22
23 class _ForwardingConnectionErrorHandler(messaging.ConnectionErrorHandler):
24
25 def __init__(self, callback):
26 self._callback = callback
27
28 def OnError(self, result):
29 self._callback(result)
30
31
32 class MessagingTest(unittest.TestCase):
33
34 def setUp(self):
35 mojo.embedder.Init()
36 self.loop = system.RunLoop()
37 self.received_messages = []
38 self.received_errors = []
39 def _OnMessage(message):
40 self.received_messages.append(message)
41 def _OnError(result):
42 self.received_errors.append(result)
43 handles = system.MessagePipe()
44 self.connector = messaging.Connector(handles.handle1)
45 self.connector.SetIncomingMessageReceiver(
46 _ForwardingMessageReceiver(_OnMessage))
47 self.connector.SetErrorHandler(
48 _ForwardingConnectionErrorHandler(_OnError))
49 self.connector.Start()
50 self.handle = handles.handle0
51
52
53 def tearDown(self):
54 self.connector = None
55 self.handle = None
56 self.loop = None
57
58 def testConnectorRead(self):
59 self.handle.WriteMessage()
60 self.loop.RunUntilIdle()
61 self.assertTrue(self.received_messages)
62 self.assertFalse(self.received_errors)
63
64 def testConnectorWrite(self):
65 self.connector.Accept(messaging.Message())
66 (result, _, _) = self.handle.ReadMessage()
67 self.assertEquals(result, system.RESULT_OK)
68 self.assertFalse(self.received_errors)
69
70 def testConnectorCloseRemoteHandle(self):
71 self.handle.Close()
72 self.loop.RunUntilIdle()
73 self.assertFalse(self.received_messages)
74 self.assertTrue(self.received_errors)
75 self.assertEquals(self.received_errors[0],
76 system.RESULT_FAILED_PRECONDITION)
77
78 def testConnectorDeleteConnector(self):
79 self.connector = None
80 (result, _, _) = self.handle.ReadMessage()
81 self.assertEquals(result, system.RESULT_FAILED_PRECONDITION)
OLDNEW
« no previous file with comments | « mojo/public/python/mojo/bindings/messaging.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698