OLD | NEW |
1 // Copyright 2015 PDFium Authors. All rights reserved. | 1 // Copyright 2015 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <limits> | 5 #include <limits> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "fpdfsdk/fpdfview_c_api_test.h" | 8 #include "fpdfsdk/fpdfview_c_api_test.h" |
9 #include "public/fpdfview.h" | 9 #include "public/fpdfview.h" |
10 #include "testing/embedder_test.h" | 10 #include "testing/embedder_test.h" |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 } | 49 } |
50 | 50 |
51 EXPECT_EQ(-1, FPDF_GetSecurityHandlerRevision(document())); | 51 EXPECT_EQ(-1, FPDF_GetSecurityHandlerRevision(document())); |
52 | 52 |
53 EXPECT_EQ(0, FPDF_GetPageCount(document())); | 53 EXPECT_EQ(0, FPDF_GetPageCount(document())); |
54 | 54 |
55 EXPECT_TRUE(FPDF_VIEWERREF_GetPrintScaling(document())); | 55 EXPECT_TRUE(FPDF_VIEWERREF_GetPrintScaling(document())); |
56 EXPECT_EQ(1, FPDF_VIEWERREF_GetNumCopies(document())); | 56 EXPECT_EQ(1, FPDF_VIEWERREF_GetNumCopies(document())); |
57 EXPECT_EQ(DuplexUndefined, FPDF_VIEWERREF_GetDuplex(document())); | 57 EXPECT_EQ(DuplexUndefined, FPDF_VIEWERREF_GetDuplex(document())); |
58 | 58 |
59 EXPECT_EQ(0, FPDF_CountNamedDests(document())); | 59 EXPECT_EQ(0u, FPDF_CountNamedDests(document())); |
60 } | 60 } |
61 | 61 |
62 TEST_F(FPDFViewEmbeddertest, Page) { | 62 TEST_F(FPDFViewEmbeddertest, Page) { |
63 EXPECT_TRUE(OpenDocument("about_blank.pdf")); | 63 EXPECT_TRUE(OpenDocument("about_blank.pdf")); |
64 FPDF_PAGE page = LoadPage(0); | 64 FPDF_PAGE page = LoadPage(0); |
65 EXPECT_NE(nullptr, page); | 65 EXPECT_NE(nullptr, page); |
66 EXPECT_EQ(612.0, FPDF_GetPageWidth(page)); | 66 EXPECT_EQ(612.0, FPDF_GetPageWidth(page)); |
67 EXPECT_EQ(792.0, FPDF_GetPageHeight(page)); | 67 EXPECT_EQ(792.0, FPDF_GetPageHeight(page)); |
68 UnloadPage(page); | 68 UnloadPage(page); |
69 EXPECT_EQ(nullptr, LoadPage(1)); | 69 EXPECT_EQ(nullptr, LoadPage(1)); |
70 } | 70 } |
71 | 71 |
72 TEST_F(FPDFViewEmbeddertest, ViewerRef) { | 72 TEST_F(FPDFViewEmbeddertest, ViewerRef) { |
73 EXPECT_TRUE(OpenDocument("about_blank.pdf")); | 73 EXPECT_TRUE(OpenDocument("about_blank.pdf")); |
74 EXPECT_TRUE(FPDF_VIEWERREF_GetPrintScaling(document())); | 74 EXPECT_TRUE(FPDF_VIEWERREF_GetPrintScaling(document())); |
75 EXPECT_EQ(1, FPDF_VIEWERREF_GetNumCopies(document())); | 75 EXPECT_EQ(1, FPDF_VIEWERREF_GetNumCopies(document())); |
76 EXPECT_EQ(DuplexUndefined, FPDF_VIEWERREF_GetDuplex(document())); | 76 EXPECT_EQ(DuplexUndefined, FPDF_VIEWERREF_GetDuplex(document())); |
77 } | 77 } |
78 | 78 |
79 TEST_F(FPDFViewEmbeddertest, NamedDests) { | 79 TEST_F(FPDFViewEmbeddertest, NamedDests) { |
80 EXPECT_TRUE(OpenDocument("named_dests.pdf")); | 80 EXPECT_TRUE(OpenDocument("named_dests.pdf")); |
81 long buffer_size; | 81 long buffer_size; |
82 char fixed_buffer[512]; | 82 char fixed_buffer[512]; |
83 FPDF_DEST dest; | 83 FPDF_DEST dest; |
84 | 84 |
85 // Query the size of the first item. | 85 // Query the size of the first item. |
86 buffer_size = 2000000; // Absurdly large, check not used for this case. | 86 buffer_size = 2000000; // Absurdly large, check not used for this case. |
87 dest = FPDF_GetNamedDest(document(), 0, nullptr, &buffer_size); | 87 dest = FPDF_GetNamedDest(document(), 0, nullptr, &buffer_size); |
88 EXPECT_NE(nullptr, dest); | 88 EXPECT_NE(nullptr, dest); |
89 EXPECT_EQ(12u, buffer_size); | 89 EXPECT_EQ(12, buffer_size); |
90 | 90 |
91 // Try to retrieve the first item with too small a buffer. | 91 // Try to retrieve the first item with too small a buffer. |
92 buffer_size = 10; | 92 buffer_size = 10; |
93 dest = FPDF_GetNamedDest(document(), 0, fixed_buffer, &buffer_size); | 93 dest = FPDF_GetNamedDest(document(), 0, fixed_buffer, &buffer_size); |
94 EXPECT_NE(nullptr, dest); | 94 EXPECT_NE(nullptr, dest); |
95 EXPECT_EQ(-1, buffer_size); | 95 EXPECT_EQ(-1, buffer_size); |
96 | 96 |
97 // Try to retrieve the first item with correctly sized buffer. Item is | 97 // Try to retrieve the first item with correctly sized buffer. Item is |
98 // taken from Dests NameTree in named_dests.pdf. | 98 // taken from Dests NameTree in named_dests.pdf. |
99 buffer_size = 12; | 99 buffer_size = 12; |
100 dest = FPDF_GetNamedDest(document(), 0, fixed_buffer, &buffer_size); | 100 dest = FPDF_GetNamedDest(document(), 0, fixed_buffer, &buffer_size); |
101 EXPECT_NE(nullptr, dest); | 101 EXPECT_NE(nullptr, dest); |
102 EXPECT_EQ(12u, buffer_size); | 102 EXPECT_EQ(12, buffer_size); |
103 EXPECT_EQ(std::string("F\0i\0r\0s\0t\0\0\0", 12), | 103 EXPECT_EQ(std::string("F\0i\0r\0s\0t\0\0\0", 12), |
104 std::string(fixed_buffer, buffer_size)); | 104 std::string(fixed_buffer, buffer_size)); |
105 | 105 |
106 // Try to retrieve the second item with ample buffer. Item is taken | 106 // Try to retrieve the second item with ample buffer. Item is taken |
107 // from Dests NameTree but has a sub-dictionary in named_dests.pdf. | 107 // from Dests NameTree but has a sub-dictionary in named_dests.pdf. |
108 buffer_size = sizeof(fixed_buffer); | 108 buffer_size = sizeof(fixed_buffer); |
109 dest = FPDF_GetNamedDest(document(), 1, fixed_buffer, &buffer_size); | 109 dest = FPDF_GetNamedDest(document(), 1, fixed_buffer, &buffer_size); |
110 EXPECT_NE(nullptr, dest); | 110 EXPECT_NE(nullptr, dest); |
111 EXPECT_EQ(10u, buffer_size); | 111 EXPECT_EQ(10, buffer_size); |
112 EXPECT_EQ(std::string("N\0e\0x\0t\0\0\0", 10), | 112 EXPECT_EQ(std::string("N\0e\0x\0t\0\0\0", 10), |
113 std::string(fixed_buffer, buffer_size)); | 113 std::string(fixed_buffer, buffer_size)); |
114 | 114 |
115 // Try to retrieve third item with ample buffer. Item is taken | 115 // Try to retrieve third item with ample buffer. Item is taken |
116 // from Dests NameTree but has a bad sub-dictionary in named_dests.pdf. | 116 // from Dests NameTree but has a bad sub-dictionary in named_dests.pdf. |
117 // in named_dests.pdf). | 117 // in named_dests.pdf). |
118 buffer_size = sizeof(fixed_buffer); | 118 buffer_size = sizeof(fixed_buffer); |
119 dest = FPDF_GetNamedDest(document(), 2, fixed_buffer, &buffer_size); | 119 dest = FPDF_GetNamedDest(document(), 2, fixed_buffer, &buffer_size); |
120 EXPECT_EQ(nullptr, dest); | 120 EXPECT_EQ(nullptr, dest); |
121 EXPECT_EQ(sizeof(fixed_buffer), | 121 EXPECT_EQ(sizeof(fixed_buffer), |
122 static_cast<size_t>(buffer_size)); // unmodified. | 122 static_cast<size_t>(buffer_size)); // unmodified. |
123 | 123 |
124 // Try to retrieve the forth item with ample buffer. Item is taken | 124 // Try to retrieve the forth item with ample buffer. Item is taken |
125 // from Dests NameTree but has a vale of the wrong type in named_dests.pdf. | 125 // from Dests NameTree but has a vale of the wrong type in named_dests.pdf. |
126 buffer_size = sizeof(fixed_buffer); | 126 buffer_size = sizeof(fixed_buffer); |
127 dest = FPDF_GetNamedDest(document(), 3, fixed_buffer, &buffer_size); | 127 dest = FPDF_GetNamedDest(document(), 3, fixed_buffer, &buffer_size); |
128 EXPECT_EQ(nullptr, dest); | 128 EXPECT_EQ(nullptr, dest); |
129 EXPECT_EQ(sizeof(fixed_buffer), | 129 EXPECT_EQ(sizeof(fixed_buffer), |
130 static_cast<size_t>(buffer_size)); // unmodified. | 130 static_cast<size_t>(buffer_size)); // unmodified. |
131 | 131 |
132 // Try to retrieve fifth item with ample buffer. Item taken from the | 132 // Try to retrieve fifth item with ample buffer. Item taken from the |
133 // old-style Dests dictionary object in named_dests.pdf. | 133 // old-style Dests dictionary object in named_dests.pdf. |
134 buffer_size = sizeof(fixed_buffer); | 134 buffer_size = sizeof(fixed_buffer); |
135 dest = FPDF_GetNamedDest(document(), 4, fixed_buffer, &buffer_size); | 135 dest = FPDF_GetNamedDest(document(), 4, fixed_buffer, &buffer_size); |
136 EXPECT_NE(nullptr, dest); | 136 EXPECT_NE(nullptr, dest); |
137 EXPECT_EQ(30u, buffer_size); | 137 EXPECT_EQ(30, buffer_size); |
138 EXPECT_EQ(std::string("F\0i\0r\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 30), | 138 EXPECT_EQ(std::string("F\0i\0r\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 30), |
139 std::string(fixed_buffer, buffer_size)); | 139 std::string(fixed_buffer, buffer_size)); |
140 | 140 |
141 // Try to retrieve sixth item with ample buffer. Item istaken from the | 141 // Try to retrieve sixth item with ample buffer. Item istaken from the |
142 // old-style Dests dictionary object but has a sub-dictionary in | 142 // old-style Dests dictionary object but has a sub-dictionary in |
143 // named_dests.pdf. | 143 // named_dests.pdf. |
144 buffer_size = sizeof(fixed_buffer); | 144 buffer_size = sizeof(fixed_buffer); |
145 dest = FPDF_GetNamedDest(document(), 5, fixed_buffer, &buffer_size); | 145 dest = FPDF_GetNamedDest(document(), 5, fixed_buffer, &buffer_size); |
146 EXPECT_NE(nullptr, dest); | 146 EXPECT_NE(nullptr, dest); |
147 EXPECT_EQ(28u, buffer_size); | 147 EXPECT_EQ(28, buffer_size); |
148 EXPECT_EQ(std::string("L\0a\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 28), | 148 EXPECT_EQ(std::string("L\0a\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 28), |
149 std::string(fixed_buffer, buffer_size)); | 149 std::string(fixed_buffer, buffer_size)); |
150 | 150 |
151 // Try to retrieve non-existent item with ample buffer. | 151 // Try to retrieve non-existent item with ample buffer. |
152 buffer_size = sizeof(fixed_buffer); | 152 buffer_size = sizeof(fixed_buffer); |
153 dest = FPDF_GetNamedDest(document(), 6, fixed_buffer, &buffer_size); | 153 dest = FPDF_GetNamedDest(document(), 6, fixed_buffer, &buffer_size); |
154 EXPECT_EQ(nullptr, dest); | 154 EXPECT_EQ(nullptr, dest); |
155 EXPECT_EQ(sizeof(fixed_buffer), | 155 EXPECT_EQ(sizeof(fixed_buffer), |
156 static_cast<size_t>(buffer_size)); // unmodified. | 156 static_cast<size_t>(buffer_size)); // unmodified. |
157 | 157 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 | 273 |
274 // The test should pass when there is no infinite recursion in | 274 // The test should pass when there is no infinite recursion in |
275 // CPDF_SyntaxParser::GetString(). | 275 // CPDF_SyntaxParser::GetString(). |
276 TEST_F(FPDFViewEmbeddertest, Hang_355) { | 276 TEST_F(FPDFViewEmbeddertest, Hang_355) { |
277 EXPECT_FALSE(OpenDocument("bug_355.pdf")); | 277 EXPECT_FALSE(OpenDocument("bug_355.pdf")); |
278 } | 278 } |
279 // The test should pass even when the file has circular references to pages. | 279 // The test should pass even when the file has circular references to pages. |
280 TEST_F(FPDFViewEmbeddertest, Hang_360) { | 280 TEST_F(FPDFViewEmbeddertest, Hang_360) { |
281 EXPECT_FALSE(OpenDocument("bug_360.pdf")); | 281 EXPECT_FALSE(OpenDocument("bug_360.pdf")); |
282 } | 282 } |
OLD | NEW |