summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoretienneb <etienneb@chromium.org>2016-04-26 08:13:45 -0700
committerCommit bot <commit-bot@chromium.org>2016-04-26 08:13:45 -0700
commit7712c26b05c85399afbf8cb3d363836e678ad443 (patch)
treebf5d419c19ae802eec16aea3fa791640872ed9ed
parent3081cc07898dd19a0a00d406ac3555c111940dce (diff)
downloadpdfium-7712c26b05c85399afbf8cb3d363836e678ad443.tar.xz
Fix unittest with embedded NUL character.
There is an embedded NUL character (previously line 40). The test was working because the beginning ot the string is identical. But, the rest of the string wasn't compare at all. TESTED: manually etienneb@burger:~/src/pdfium/pdfium$ out/Debug/pdfium_embeddertests --gtest_filter=*.EmptyCreation Note: Google Test filter = *.EmptyCreation [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from FPDFEditEmbeddertest [ RUN ] FPDFEditEmbeddertest.EmptyCreation [ OK ] FPDFEditEmbeddertest.EmptyCreation (13 ms) [----------] 1 test from FPDFEditEmbeddertest (13 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (13 ms total) [ PASSED ] 1 test. R=dsinclair BUG=589955 Review URL: https://codereview.chromium.org/1916083002
-rw-r--r--fpdfsdk/fpdfedit_embeddertest.cpp88
1 files changed, 49 insertions, 39 deletions
diff --git a/fpdfsdk/fpdfedit_embeddertest.cpp b/fpdfsdk/fpdfedit_embeddertest.cpp
index 480ef51dbd..720dcdec01 100644
--- a/fpdfsdk/fpdfedit_embeddertest.cpp
+++ b/fpdfsdk/fpdfedit_embeddertest.cpp
@@ -11,50 +11,60 @@
class FPDFEditEmbeddertest : public EmbedderTest, public TestSaver {};
+namespace {
+const char kExpectedPDF[] =
+ "%PDF-1.7\r\n"
+ "%\xA1\xB3\xC5\xD7\r\n"
+ "1 0 obj\r\n"
+ "<</Pages 2 0 R /Type/Catalog>>\r\n"
+ "endobj\r\n"
+ "2 0 obj\r\n"
+ "<</Count 1/Kids\\[ 4 0 R \\]/Type/Pages>>\r\n"
+ "endobj\r\n"
+ "3 0 obj\r\n"
+ "<</CreationDate\\(D:.*\\)/Creator\\(PDFium\\)>>\r\n"
+ "endobj\r\n"
+ "4 0 obj\r\n"
+ "<</Contents 5 0 R /MediaBox\\[ 0 0 640 480\\]"
+ "/Parent 2 0 R /Resources<<>>/Rotate 0/Type/Page"
+ ">>\r\n"
+ "endobj\r\n"
+ "5 0 obj\r\n"
+ "<</Filter/FlateDecode/Length 8>>stream\r\n"
+ // Character '_' is matching '\0' (see comment below).
+ "x\x9C\x3____\x1\r\n"
+ "endstream\r\n"
+ "endobj\r\n"
+ "xref\r\n"
+ "0 6\r\n"
+ "0000000000 65535 f\r\n"
+ "0000000017 00000 n\r\n"
+ "0000000066 00000 n\r\n"
+ "0000000122 00000 n\r\n"
+ "0000000192 00000 n\r\n"
+ "0000000301 00000 n\r\n"
+ "trailer\r\n"
+ "<<\r\n"
+ "/Root 1 0 R\r\n"
+ "/Info 3 0 R\r\n"
+ "/Size 6/ID\\[<.*><.*>\\]>>\r\n"
+ "startxref\r\n"
+ "379\r\n"
+ "%%EOF\r\n";
+} // namespace
+
TEST_F(FPDFEditEmbeddertest, EmptyCreation) {
EXPECT_TRUE(CreateEmptyDocument());
FPDF_PAGE page = FPDFPage_New(document(), 1, 640.0, 480.0);
EXPECT_NE(nullptr, page);
EXPECT_TRUE(FPDFPage_GenerateContent(page));
EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
- EXPECT_THAT(GetString(),
- testing::MatchesRegex(
- "%PDF-1.7\r\n"
- "%\xA1\xB3\xC5\xD7\r\n"
- "1 0 obj\r\n"
- "<</Pages 2 0 R /Type/Catalog>>\r\n"
- "endobj\r\n"
- "2 0 obj\r\n"
- "<</Count 1/Kids\\[ 4 0 R \\]/Type/Pages>>\r\n"
- "endobj\r\n"
- "3 0 obj\r\n"
- "<</CreationDate\\(D:.*\\)/Creator\\(PDFium\\)>>\r\n"
- "endobj\r\n"
- "4 0 obj\r\n"
- "<</Contents 5 0 R /MediaBox\\[ 0 0 640 480\\]"
- "/Parent 2 0 R /Resources<<>>/Rotate 0/Type/Page"
- ">>\r\n"
- "endobj\r\n"
- "5 0 obj\r\n"
- "<</Filter/FlateDecode/Length 8>>stream\r\n"
- "x\x9C\x3\0\0\0\0\x1\r\n"
- "endstream\r\n"
- "endobj\r\n"
- "xref\r\n"
- "0 6\r\n"
- "0000000000 65535 f\r\n"
- "0000000017 00000 n\r\n"
- "0000000066 00000 n\r\n"
- "0000000122 00000 n\r\n"
- "0000000192 00000 n\r\n"
- "0000000301 00000 n\r\n"
- "trailer\r\n"
- "<<\r\n"
- "/Root 1 0 R\r\n"
- "/Info 3 0 R\r\n"
- "/Size 6/ID\\[<.*><.*>\\]>>\r\n"
- "startxref\r\n"
- "379\r\n"
- "%%EOF\r\n"));
+
+ // The MatchesRegexp doesn't support embedded NUL ('\0') characters. They are
+ // replaced by '_' for the purpose of the test.
+ std::string result = GetString();
+ std::replace(result.begin(), result.end(), '\0', '_');
+ EXPECT_THAT(result, testing::MatchesRegex(
+ std::string(kExpectedPDF, sizeof(kExpectedPDF))));
FPDFPage_Delete(document(), 1);
}