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

Side by Side Diff: mojo/public/tests/system_core_unittest.cc

Issue 134823005: Mojo: re-organize public tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « mojo/public/tests/system_core_perftest.cc ('k') | mojo/public/tests/test_structs.mojom » ('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 2013 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 // This file tests the C API.
6
7 #include "mojo/public/system/core.h"
8
9 #include <string.h>
10
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace mojo {
14 namespace {
15
16 TEST(SystemTest, GetTimeTicksNow) {
17 const MojoTimeTicks start = MojoGetTimeTicksNow();
18 EXPECT_NE(static_cast<MojoTimeTicks>(0), start)
19 << "MojoGetTimeTicksNow should return nonzero value";
20 }
21
22 TEST(SystemTest, Basic) {
23 MojoHandle h_0;
24 MojoWaitFlags wf;
25 char buffer[10] = { 0 };
26 uint32_t buffer_size;
27
28 // The only handle that's guaranteed to be invalid is |MOJO_HANDLE_INVALID|.
29 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(MOJO_HANDLE_INVALID));
30 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
31 MojoWait(MOJO_HANDLE_INVALID, MOJO_WAIT_FLAG_EVERYTHING, 1000000));
32 h_0 = MOJO_HANDLE_INVALID;
33 wf = MOJO_WAIT_FLAG_EVERYTHING;
34 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
35 MojoWaitMany(&h_0, &wf, 1, MOJO_DEADLINE_INDEFINITE));
36 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
37 MojoWriteMessage(h_0,
38 buffer, 3,
39 NULL, 0,
40 MOJO_WRITE_MESSAGE_FLAG_NONE));
41 buffer_size = static_cast<uint32_t>(sizeof(buffer));
42 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
43 MojoReadMessage(h_0,
44 buffer, &buffer_size,
45 NULL, NULL,
46 MOJO_READ_MESSAGE_FLAG_NONE));
47
48 MojoHandle h_1;
49 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(&h_0, &h_1));
50
51 // Shouldn't be readable.
52 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
53 MojoWait(h_0, MOJO_WAIT_FLAG_READABLE, 0));
54
55 // Should be writable.
56 EXPECT_EQ(MOJO_RESULT_OK,
57 MojoWait(h_0, MOJO_WAIT_FLAG_WRITABLE, 0));
58
59 // Try to read.
60 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
61 MojoReadMessage(h_0,
62 buffer, &buffer_size,
63 NULL, NULL,
64 MOJO_READ_MESSAGE_FLAG_NONE));
65
66 // Write to |h_1|.
67 static const char hello[] = "hello";
68 memcpy(buffer, hello, sizeof(hello));
69 buffer_size = static_cast<uint32_t>(sizeof(hello));
70 EXPECT_EQ(MOJO_RESULT_OK,
71 MojoWriteMessage(h_1,
72 hello, buffer_size,
73 NULL, 0,
74 MOJO_WRITE_MESSAGE_FLAG_NONE));
75
76 // |h_0| should be readable.
77 wf = MOJO_WAIT_FLAG_READABLE;
78 EXPECT_EQ(MOJO_RESULT_OK,
79 MojoWaitMany(&h_0, &wf, 1, MOJO_DEADLINE_INDEFINITE));
80
81 // Read from |h_0|.
82 memset(buffer, 0, sizeof(buffer));
83 buffer_size = static_cast<uint32_t>(sizeof(buffer));
84 EXPECT_EQ(MOJO_RESULT_OK,
85 MojoReadMessage(h_0,
86 buffer, &buffer_size,
87 NULL, NULL,
88 MOJO_READ_MESSAGE_FLAG_NONE));
89 EXPECT_EQ(static_cast<uint32_t>(sizeof(hello)), buffer_size);
90 EXPECT_EQ(0, memcmp(hello, buffer, sizeof(hello)));
91
92 // |h_0| should no longer be readable.
93 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
94 MojoWait(h_0, MOJO_WAIT_FLAG_READABLE, 10));
95
96 // Close |h_0|.
97 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_0));
98
99 // |h_1| should no longer be readable or writable.
100 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
101 MojoWait(h_1,
102 MOJO_WAIT_FLAG_READABLE | MOJO_WAIT_FLAG_WRITABLE,
103 1000));
104
105 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_1));
106 }
107
108 // TODO(vtl): Add multi-threaded tests.
109
110 } // namespace
111 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/tests/system_core_perftest.cc ('k') | mojo/public/tests/test_structs.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698