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

Side by Side Diff: native_client_sdk/src/tests/nacl_io_test/fifo_test.cc

Issue 23498015: [NaCl SDK] Support non blocking TCP/UDP (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added Fifo Tests Created 7 years, 3 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
OLDNEW
(Empty)
1 /* Copyright (c) 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
6 #include <errno.h>
7 #include <fcntl.h>
8 #include <pthread.h>
9 #include <stdio.h>
10 #include <sys/ioctl.h>
11 #include <sys/stat.h>
12 #include <sys/time.h>
13
14 #include "gtest/gtest.h"
15
16 #include "nacl_io/fifo_char.h"
17 #include "nacl_io/fifo_null.h"
18 #include "nacl_io/fifo_packet.h"
19
20 #include "ppapi_simple/ps.h"
21
22 using namespace nacl_io;
23
24 namespace {
25 const size_t kTestSize = 32;
26 const size_t kHalfSize = 16;
27 const size_t kQuarterSize = 8;
28 };
29
30 TEST(FIFONull, Basic) {
31 FIFONull fifo;
32 EXPECT_FALSE(fifo.IsFull());
33 EXPECT_FALSE(fifo.IsEmpty());
34
35 EXPECT_LT(0, fifo.ReadAvailable());
36 EXPECT_LT(0, fifo.WriteAvailable());
37 }
38
39 TEST(FIFOChar, Wrap) {
40 char temp_wr[kTestSize * 2];
41 char temp_rd[kTestSize * 2];
42 size_t wr_offs = 0;
43 size_t rd_offs = 0;
44
45 FIFOChar fifo(kTestSize);
46
47 memset(temp_rd, 0, sizeof(temp_rd));
48 for (size_t index = 0; index < sizeof(temp_wr); index++)
49 temp_wr[index] = index;
50
51 EXPECT_TRUE(fifo.IsEmpty());
52 EXPECT_FALSE(fifo.IsFull());
53
54 // Wrap read and write differently, and verify copy is correct
55 EXPECT_EQ(0, fifo.ReadAvailable());
56 EXPECT_EQ(kTestSize, fifo.WriteAvailable());
57
58 wr_offs += fifo.Write(temp_wr, kHalfSize);
59 EXPECT_EQ(kHalfSize, wr_offs);
60
61 EXPECT_FALSE(fifo.IsEmpty());
62 EXPECT_FALSE(fifo.IsFull());
63
64 rd_offs += fifo.Read(temp_rd, kQuarterSize);
65 EXPECT_EQ(kQuarterSize, rd_offs);
66
67 EXPECT_FALSE(fifo.IsEmpty());
68 EXPECT_FALSE(fifo.IsFull());
69
70 wr_offs += fifo.Write(&temp_wr[wr_offs], kTestSize);
71 EXPECT_EQ(kTestSize + kQuarterSize, wr_offs);
72
73 EXPECT_FALSE(fifo.IsEmpty());
74
75 rd_offs += fifo.Read(&temp_rd[rd_offs], kTestSize);
76 EXPECT_EQ(kTestSize + kQuarterSize, rd_offs);
77
78 EXPECT_TRUE(fifo.IsEmpty());
79 EXPECT_FALSE(fifo.IsFull());
80
81 for (size_t index = 0; index < kQuarterSize + kTestSize; index++)
82 EXPECT_EQ((char) index, temp_rd[index]);
83 }
84
85 TEST(FIFOPacket, Packets) {
86 char temp_wr[kTestSize];
87 FIFOPacket fifo(kTestSize);
88
89 Packet* pkt0 = new Packet(temp_wr, kHalfSize, 0);
90 Packet* pkt1 = new Packet(temp_wr, kTestSize, 0);
91
92 EXPECT_TRUE(fifo.IsEmpty());
93 EXPECT_FALSE(fifo.IsFull());
94
95 EXPECT_EQ(0, fifo.ReadAvailable());
96 EXPECT_EQ(kTestSize, fifo.WriteAvailable());
97
98 fifo.WritePacket(pkt0);
99 EXPECT_FALSE(fifo.IsEmpty());
100 EXPECT_FALSE(fifo.IsFull());
101
102 EXPECT_EQ(kHalfSize, fifo.ReadAvailable());
103 EXPECT_EQ(kHalfSize, fifo.WriteAvailable());
104
105 fifo.WritePacket(pkt1);
106 EXPECT_FALSE(fifo.IsEmpty());
107 EXPECT_TRUE(fifo.IsFull());
108
109 EXPECT_EQ(kHalfSize + kTestSize, fifo.ReadAvailable());
110 EXPECT_EQ(0, fifo.WriteAvailable());
111
112 EXPECT_EQ(pkt0, fifo.ReadPacket());
113 EXPECT_FALSE(fifo.IsEmpty());
114 EXPECT_TRUE(fifo.IsFull());
115
116 EXPECT_EQ(kTestSize, fifo.ReadAvailable());
117 EXPECT_EQ(0, fifo.WriteAvailable());
118
119 EXPECT_EQ(pkt1, fifo.ReadPacket());
120
121 EXPECT_TRUE(fifo.IsEmpty());
122 EXPECT_FALSE(fifo.IsFull());
123
124 EXPECT_EQ(0, fifo.ReadAvailable());
125 EXPECT_EQ(kTestSize, fifo.WriteAvailable());
126
127 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698