@@ -21,7 +21,7 @@ using namespace rapidjson;
21
21
22
22
class FileStreamTest : public ::testing::Test {
23
23
public:
24
- FileStreamTest () : filename_(), json_(), length_() {}
24
+ FileStreamTest () : filename_(), json_(), length_(), abcde_() {}
25
25
virtual ~FileStreamTest ();
26
26
27
27
virtual void SetUp () {
@@ -49,6 +49,24 @@ class FileStreamTest : public ::testing::Test {
49
49
size_t readLength = fread (json_, 1 , length_, fp);
50
50
json_[readLength] = ' \0 ' ;
51
51
fclose (fp);
52
+
53
+ const char *abcde_paths[] = {
54
+ " data/abcde.txt" ,
55
+ " bin/data/abcde.txt" ,
56
+ " ../bin/data/abcde.txt" ,
57
+ " ../../bin/data/abcde.txt" ,
58
+ " ../../../bin/data/abcde.txt"
59
+ };
60
+ fp = 0 ;
61
+ for (size_t i = 0 ; i < sizeof (abcde_paths) / sizeof (abcde_paths[0 ]); i++) {
62
+ fp = fopen (abcde_paths[i], " rb" );
63
+ if (fp) {
64
+ abcde_ = abcde_paths[i];
65
+ break ;
66
+ }
67
+ }
68
+ ASSERT_TRUE (fp != 0 );
69
+ fclose (fp);
52
70
}
53
71
54
72
virtual void TearDown () {
@@ -64,6 +82,7 @@ class FileStreamTest : public ::testing::Test {
64
82
const char * filename_;
65
83
char *json_;
66
84
size_t length_;
85
+ const char * abcde_;
67
86
};
68
87
69
88
FileStreamTest::~FileStreamTest () {}
@@ -86,6 +105,30 @@ TEST_F(FileStreamTest, FileReadStream) {
86
105
fclose (fp);
87
106
}
88
107
108
+ TEST_F (FileStreamTest, FileReadStream_Peek4) {
109
+ FILE *fp = fopen (abcde_, " rb" );
110
+ ASSERT_TRUE (fp != 0 );
111
+ char buffer[4 ];
112
+ FileReadStream s (fp, buffer, sizeof (buffer));
113
+
114
+ const char * c = s.Peek4 ();
115
+ for (int i = 0 ; i < 4 ; i++)
116
+ EXPECT_EQ (' a' + i, c[i]);
117
+ EXPECT_EQ (0u , s.Tell ());
118
+
119
+ for (int i = 0 ; i < 5 ; i++) {
120
+ EXPECT_EQ (static_cast <size_t >(i), s.Tell ());
121
+ EXPECT_EQ (' a' + i, s.Peek ());
122
+ EXPECT_EQ (' a' + i, s.Peek ());
123
+ EXPECT_EQ (' a' + i, s.Take ());
124
+ }
125
+ EXPECT_EQ (5u , s.Tell ());
126
+ EXPECT_EQ (0 , s.Peek ());
127
+ EXPECT_EQ (0 , s.Take ());
128
+
129
+ fclose (fp);
130
+ }
131
+
89
132
TEST_F (FileStreamTest, FileWriteStream) {
90
133
char filename[L_tmpnam];
91
134
FILE* fp = TempFile (filename);
0 commit comments