OSDN Git Service

4cdb1ebdd13d22026ae0ae80b4fed4fd96abf0aa
[simplecms/utakata.git] / src / test / string_reader_test.cpp
1 #include <gtest/gtest.h>
2 #include "src/string_reader.h"
3
4 namespace reader = utakata::reader;
5
6 TEST(StringReaderTest, Test1) {
7   // StringReaderを用いた読み出しを行う。
8   reader::StringReader reader("hoge");
9
10   EXPECT_EQ(reader.GetSize(), 4);
11
12   EXPECT_EQ(reader.Read(), 'h');
13   EXPECT_EQ(reader.GetPos(), 1);
14
15   EXPECT_EQ(reader.Peek(), 'o');
16   EXPECT_EQ(reader.Read(), 'o');
17   std::vector<unsigned char> t = reader.Read(2);
18   EXPECT_EQ(t[0], 'g');
19   EXPECT_EQ(t[1], 'e');
20
21   EXPECT_EQ(reader.GetPos(), 4);
22   reader.Begin();
23   EXPECT_EQ(reader.GetPos(), 0);
24
25   EXPECT_TRUE(reader.Seek(1, reader::kForward));
26   EXPECT_EQ(reader.Read(), 'o');
27
28   size_t seeksize = 0;
29   EXPECT_TRUE(reader.Seek(1, reader::kBackward, &seeksize));
30   EXPECT_EQ(seeksize, 1);
31   EXPECT_EQ(reader.Read(), 'o');
32
33   t = reader.Read(2);
34   EXPECT_EQ(t[0], 'g');
35   EXPECT_EQ(t[1], 'e');
36   EXPECT_TRUE(reader.IsEof());
37
38   // すでに末尾であるのに進もうとすると例外が発生する。
39   EXPECT_THROW(reader.Read(), reader::EndOfDeviceException);
40 }
41
42 int main(int argc, char** argv) {
43   testing::InitGoogleTest(&argc, argv);
44
45   return RUN_ALL_TESTS();
46 }
47