2 #include <gtest/gtest.h>
3 #include "src/file_reader.h"
4 #include "src/common/scoped_ptr.h"
6 namespace reader = utakata::reader;
8 class FileReaderTest : public ::testing::Test {
10 virtual void SetUp() {
11 FILE* f = fopen("test.txt", "w");
12 fprintf(f, "%s", "hoge");
18 TEST_F(FileReaderTest, NormalUsega) {
19 // FileReaderを用いた読み出しを行う。
20 reader::FileReader reader("test.txt");
22 EXPECT_EQ(reader.GetSize(), 4);
24 EXPECT_EQ(reader.Read(), 'h');
25 EXPECT_EQ(reader.GetPos(), 1);
27 EXPECT_EQ(reader.Peek(), 'o');
28 EXPECT_EQ(reader.Read(), 'o');
29 std::vector<unsigned char> t = reader.Read(2);
33 EXPECT_EQ(reader.GetPos(), 4);
35 EXPECT_EQ(reader.GetPos(), 0);
37 EXPECT_TRUE(reader.Seek(1, reader::kForward));
38 EXPECT_EQ(reader.Read(), 'o');
41 EXPECT_TRUE(reader.Seek(1, reader::kBackward, &seeksize));
42 EXPECT_EQ(seeksize, 1);
43 EXPECT_EQ(reader.Read(), 'o');
48 EXPECT_TRUE(reader.IsEof());
50 // すでに末尾であるのに進もうとすると例外が発生する。
51 EXPECT_THROW(reader.Read(), reader::EndOfDeviceException);
54 TEST_F(FileReaderTest, OpenAndClose) {
55 reader::FileReader reader("test.txt");
57 EXPECT_EQ(reader.GetSize(), 4);
59 EXPECT_EQ(reader.Read(), 'h');
60 EXPECT_EQ(reader.GetPos(), 1);
62 EXPECT_EQ(reader.Peek(), 'o');
63 EXPECT_EQ(reader.Read(), 'o');
64 std::vector<unsigned char> t = reader.Read(2);
68 EXPECT_EQ(reader.GetPos(), 4);
72 EXPECT_THROW(reader.Read(), reader::IOException);
75 EXPECT_TRUE(reader.Seek(1, reader::kForward));
76 EXPECT_EQ(reader.Read(), 'o');
79 EXPECT_TRUE(reader.Seek(1, reader::kBackward, &seeksize));
80 EXPECT_EQ(seeksize, 1);
81 EXPECT_EQ(reader.Read(), 'o');
86 EXPECT_TRUE(reader.IsEof());
88 // すでに末尾であるのに進もうとすると例外が発生する。
89 EXPECT_THROW(reader.Read(), reader::EndOfDeviceException);
92 int main(int argc, char** argv)
94 testing::InitGoogleTest(&argc, argv);
96 return RUN_ALL_TESTS();