summaryrefslogtreecommitdiff
path: root/src/io/read_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/io/read_test.cpp')
-rw-r--r--src/io/read_test.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/io/read_test.cpp b/src/io/read_test.cpp
new file mode 100644
index 0000000..193777f
--- /dev/null
+++ b/src/io/read_test.cpp
@@ -0,0 +1,59 @@
+#include "read.hpp"
+
+#include <gtest/gtest.h>
+
+#include "../strings/zstring.hpp"
+
+static
+int string_pipe(ZString sz)
+{
+ // if this doesn't work we'll get test failures anyway
+ int pfd[2];
+ pipe(pfd);
+ write(pfd[1], sz.c_str(), sz.size());
+ close(pfd[1]);
+ return pfd[0];
+}
+
+TEST(io, read1)
+{
+ io::ReadFile rf(string_pipe("Hello"));
+ FString hi;
+ EXPECT_TRUE(rf.getline(hi));
+ EXPECT_EQ(hi, "Hello");
+ EXPECT_FALSE(rf.getline(hi));
+}
+TEST(io, read2)
+{
+ io::ReadFile rf(string_pipe("Hello\n"));
+ FString hi;
+ EXPECT_TRUE(rf.getline(hi));
+ EXPECT_EQ(hi, "Hello");
+ EXPECT_FALSE(rf.getline(hi));
+}
+TEST(io, read3)
+{
+ io::ReadFile rf(string_pipe("Hello\r"));
+ FString hi;
+ EXPECT_TRUE(rf.getline(hi));
+ EXPECT_EQ(hi, "Hello");
+ EXPECT_FALSE(rf.getline(hi));
+}
+TEST(io, read4)
+{
+ io::ReadFile rf(string_pipe("Hello\r\n"));
+ FString hi;
+ EXPECT_TRUE(rf.getline(hi));
+ EXPECT_EQ(hi, "Hello");
+ EXPECT_FALSE(rf.getline(hi));
+}
+TEST(io, read5)
+{
+ io::ReadFile rf(string_pipe("Hello\n\r"));
+ FString hi;
+ EXPECT_TRUE(rf.getline(hi));
+ EXPECT_EQ(hi, "Hello");
+ EXPECT_TRUE(rf.getline(hi));
+ EXPECT_FALSE(hi);
+ EXPECT_FALSE(rf.getline(hi));
+}