diff options
Diffstat (limited to 'src/io/read_test.cpp')
-rw-r--r-- | src/io/read_test.cpp | 59 |
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)); +} |