summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/rapidjson/test/unittest/filestreamtest.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/rapidjson/test/unittest/filestreamtest.cpp')
-rw-r--r--3rdparty/rapidjson/test/unittest/filestreamtest.cpp47
1 files changed, 45 insertions, 2 deletions
diff --git a/3rdparty/rapidjson/test/unittest/filestreamtest.cpp b/3rdparty/rapidjson/test/unittest/filestreamtest.cpp
index a38133fa7f6..de0b4d1a4aa 100644
--- a/3rdparty/rapidjson/test/unittest/filestreamtest.cpp
+++ b/3rdparty/rapidjson/test/unittest/filestreamtest.cpp
@@ -1,6 +1,6 @@
// Tencent is pleased to support the open source community by making RapidJSON available.
//
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
+// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
//
// Licensed under the MIT License (the "License"); you may not use this file except
// in compliance with the License. You may obtain a copy of the License at
@@ -21,7 +21,7 @@ using namespace rapidjson;
class FileStreamTest : public ::testing::Test {
public:
- FileStreamTest() : filename_(), json_(), length_() {}
+ FileStreamTest() : filename_(), json_(), length_(), abcde_() {}
virtual ~FileStreamTest();
virtual void SetUp() {
@@ -49,6 +49,24 @@ public:
size_t readLength = fread(json_, 1, length_, fp);
json_[readLength] = '\0';
fclose(fp);
+
+ const char *abcde_paths[] = {
+ "data/abcde.txt",
+ "bin/data/abcde.txt",
+ "../bin/data/abcde.txt",
+ "../../bin/data/abcde.txt",
+ "../../../bin/data/abcde.txt"
+ };
+ fp = 0;
+ for (size_t i = 0; i < sizeof(abcde_paths) / sizeof(abcde_paths[0]); i++) {
+ fp = fopen(abcde_paths[i], "rb");
+ if (fp) {
+ abcde_ = abcde_paths[i];
+ break;
+ }
+ }
+ ASSERT_TRUE(fp != 0);
+ fclose(fp);
}
virtual void TearDown() {
@@ -64,6 +82,7 @@ protected:
const char* filename_;
char *json_;
size_t length_;
+ const char* abcde_;
};
FileStreamTest::~FileStreamTest() {}
@@ -86,6 +105,30 @@ TEST_F(FileStreamTest, FileReadStream) {
fclose(fp);
}
+TEST_F(FileStreamTest, FileReadStream_Peek4) {
+ FILE *fp = fopen(abcde_, "rb");
+ ASSERT_TRUE(fp != 0);
+ char buffer[4];
+ FileReadStream s(fp, buffer, sizeof(buffer));
+
+ const char* c = s.Peek4();
+ for (int i = 0; i < 4; i++)
+ EXPECT_EQ('a' + i, c[i]);
+ EXPECT_EQ(0u, s.Tell());
+
+ for (int i = 0; i < 5; i++) {
+ EXPECT_EQ(static_cast<size_t>(i), s.Tell());
+ EXPECT_EQ('a' + i, s.Peek());
+ EXPECT_EQ('a' + i, s.Peek());
+ EXPECT_EQ('a' + i, s.Take());
+ }
+ EXPECT_EQ(5u, s.Tell());
+ EXPECT_EQ(0, s.Peek());
+ EXPECT_EQ(0, s.Take());
+
+ fclose(fp);
+}
+
TEST_F(FileStreamTest, FileWriteStream) {
char filename[L_tmpnam];
FILE* fp = TempFile(filename);