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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/tests/nacl_io_test/fifo_test.cc
diff --git a/native_client_sdk/src/tests/nacl_io_test/fifo_test.cc b/native_client_sdk/src/tests/nacl_io_test/fifo_test.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ed82af916267d9bdf5a0b4fa7cf8b84a5197f511
--- /dev/null
+++ b/native_client_sdk/src/tests/nacl_io_test/fifo_test.cc
@@ -0,0 +1,127 @@
+/* Copyright (c) 2013 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.
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#include "gtest/gtest.h"
+
+#include "nacl_io/fifo_char.h"
+#include "nacl_io/fifo_null.h"
+#include "nacl_io/fifo_packet.h"
+
+#include "ppapi_simple/ps.h"
+
+using namespace nacl_io;
+
+namespace {
+const size_t kTestSize = 32;
+const size_t kHalfSize = 16;
+const size_t kQuarterSize = 8;
+};
+
+TEST(FIFONull, Basic) {
+ FIFONull fifo;
+ EXPECT_FALSE(fifo.IsFull());
+ EXPECT_FALSE(fifo.IsEmpty());
+
+ EXPECT_LT(0, fifo.ReadAvailable());
+ EXPECT_LT(0, fifo.WriteAvailable());
+}
+
+TEST(FIFOChar, Wrap) {
+ char temp_wr[kTestSize * 2];
+ char temp_rd[kTestSize * 2];
+ size_t wr_offs = 0;
+ size_t rd_offs = 0;
+
+ FIFOChar fifo(kTestSize);
+
+ memset(temp_rd, 0, sizeof(temp_rd));
+ for (size_t index = 0; index < sizeof(temp_wr); index++)
+ temp_wr[index] = index;
+
+ EXPECT_TRUE(fifo.IsEmpty());
+ EXPECT_FALSE(fifo.IsFull());
+
+ // Wrap read and write differently, and verify copy is correct
+ EXPECT_EQ(0, fifo.ReadAvailable());
+ EXPECT_EQ(kTestSize, fifo.WriteAvailable());
+
+ wr_offs += fifo.Write(temp_wr, kHalfSize);
+ EXPECT_EQ(kHalfSize, wr_offs);
+
+ EXPECT_FALSE(fifo.IsEmpty());
+ EXPECT_FALSE(fifo.IsFull());
+
+ rd_offs += fifo.Read(temp_rd, kQuarterSize);
+ EXPECT_EQ(kQuarterSize, rd_offs);
+
+ EXPECT_FALSE(fifo.IsEmpty());
+ EXPECT_FALSE(fifo.IsFull());
+
+ wr_offs += fifo.Write(&temp_wr[wr_offs], kTestSize);
+ EXPECT_EQ(kTestSize + kQuarterSize, wr_offs);
+
+ EXPECT_FALSE(fifo.IsEmpty());
+
+ rd_offs += fifo.Read(&temp_rd[rd_offs], kTestSize);
+ EXPECT_EQ(kTestSize + kQuarterSize, rd_offs);
+
+ EXPECT_TRUE(fifo.IsEmpty());
+ EXPECT_FALSE(fifo.IsFull());
+
+ for (size_t index = 0; index < kQuarterSize + kTestSize; index++)
+ EXPECT_EQ((char) index, temp_rd[index]);
+}
+
+TEST(FIFOPacket, Packets) {
+ char temp_wr[kTestSize];
+ FIFOPacket fifo(kTestSize);
+
+ Packet* pkt0 = new Packet(temp_wr, kHalfSize, 0);
+ Packet* pkt1 = new Packet(temp_wr, kTestSize, 0);
+
+ EXPECT_TRUE(fifo.IsEmpty());
+ EXPECT_FALSE(fifo.IsFull());
+
+ EXPECT_EQ(0, fifo.ReadAvailable());
+ EXPECT_EQ(kTestSize, fifo.WriteAvailable());
+
+ fifo.WritePacket(pkt0);
+ EXPECT_FALSE(fifo.IsEmpty());
+ EXPECT_FALSE(fifo.IsFull());
+
+ EXPECT_EQ(kHalfSize, fifo.ReadAvailable());
+ EXPECT_EQ(kHalfSize, fifo.WriteAvailable());
+
+ fifo.WritePacket(pkt1);
+ EXPECT_FALSE(fifo.IsEmpty());
+ EXPECT_TRUE(fifo.IsFull());
+
+ EXPECT_EQ(kHalfSize + kTestSize, fifo.ReadAvailable());
+ EXPECT_EQ(0, fifo.WriteAvailable());
+
+ EXPECT_EQ(pkt0, fifo.ReadPacket());
+ EXPECT_FALSE(fifo.IsEmpty());
+ EXPECT_TRUE(fifo.IsFull());
+
+ EXPECT_EQ(kTestSize, fifo.ReadAvailable());
+ EXPECT_EQ(0, fifo.WriteAvailable());
+
+ EXPECT_EQ(pkt1, fifo.ReadPacket());
+
+ EXPECT_TRUE(fifo.IsEmpty());
+ EXPECT_FALSE(fifo.IsFull());
+
+ EXPECT_EQ(0, fifo.ReadAvailable());
+ EXPECT_EQ(kTestSize, fifo.WriteAvailable());
+
+}

Powered by Google App Engine
This is Rietveld 408576698