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

Side by Side Diff: mojo/public/rust/tests/integration.rs

Issue 2240003002: Rust: Polish off communication across Mojom interfaces (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Upload newest version of code gen Created 4 years, 4 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/rust/tests/encoding.rs ('k') | mojo/public/rust/tests/util/mojom_validation.rs » ('j') | 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 2016 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 //! Tests some higher-level functionality of Mojom interfaces.
6 //!
7 //! Test failure is defined as the function returning via panicking
8 //! and the result being caught in the test! macro. If a test function
9 //! returns without panicking, it is assumed to pass.
10
11 #[macro_use]
12 extern crate mojo;
13
14 #[macro_use]
15 mod util;
16
17 use mojo::system::{Handle, MOJO_INDEFINITE};
18 use mojo::system::message_pipe;
19 use mojo::bindings::mojom::{MojomInterface, MojomInterfaceSend, MojomInterfaceRe cv};
20
21 use std::thread;
22
23 use util::mojom_validation::*;
24
25 tests! {
26 // Tests basic client and server interaction over a thread
27 fn send_and_recv() {
28 let (endpt0, endpt1) = message_pipe::create(mpflags!(Create::None)).unwr ap();
29 // Client and server handles
30 let client = IntegrationTestInterfaceClient::new(endpt0);
31 let server = IntegrationTestInterfaceServer::with_version(endpt1, 0);
32 // Client thread
33 let handle = thread::spawn(move || {
34 // Send request
35 client.send_request(5, IntegrationTestInterfaceMethod0Request {
36 param0: BasicStruct {
37 a: -1,
38 },
39 }).unwrap();
40 // Wait for response
41 client.pipe().wait(signals!(Signals::Readable), MOJO_INDEFINITE);
42 // Decode response
43 let (req_id, options) = client.recv_response().unwrap();
44 assert_eq!(req_id, 5);
45 match options {
46 IntegrationTestInterfaceResponseOption::IntegrationTestInterface Method0(msg) => {
47 assert_eq!(msg.param0, vec![1, 2, 3]);
48 },
49 }
50 });
51 // Wait for request
52 server.pipe().wait(signals!(Signals::Readable), MOJO_INDEFINITE);
53 // Decode request
54 let (req_id, options) = server.recv_response().unwrap();
55 assert_eq!(req_id, 5);
56 match options {
57 IntegrationTestInterfaceRequestOption::IntegrationTestInterfaceMetho d0(msg) => {
58 assert_eq!(msg.param0.a, -1);
59 },
60 }
61 // Send response
62 server.send_request(5, IntegrationTestInterfaceMethod0Response {
63 param0: vec![1, 2, 3],
64 }).unwrap();
65 let _ = handle.join();
66 }
67 }
OLDNEW
« no previous file with comments | « mojo/public/rust/tests/encoding.rs ('k') | mojo/public/rust/tests/util/mojom_validation.rs » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698