@@ -2050,6 +2050,150 @@ public void notCloseUserStreamTest() throws IOException {
2050
2050
}
2051
2051
}
2052
2052
2053
+ @ Test
2054
+ @ LogMessages (messages = {
2055
+ @ LogMessage (messageTemplate = KernelExceptionMessageConstant .UNEXPECTED_TOKEN )
2056
+ })
2057
+ public void endDicInsteadOfArrayClosingBracketTest () throws IOException {
2058
+ String fileName = sourceFolder + "invalidArrayEndDictToken.pdf" ;
2059
+ PdfDocument document = new PdfDocument (new PdfReader (fileName ));
2060
+ PdfArray actual = (PdfArray ) document .getPdfObject (4 );
2061
+ PdfArray expected = new PdfArray (new float []{5 , 10 , 15 , 20 });
2062
+ for (int i = 0 ; i < expected .size (); i ++) {
2063
+ Assert .assertEquals (expected .get (i ), actual .get (i ));
2064
+ }
2065
+ }
2066
+
2067
+ @ Test
2068
+ public void endArrayClosingBracketInsteadOfEndDicTest () {
2069
+ String fileName = sourceFolder + "endArrayClosingBracketInsteadOfEndDic.pdf" ;
2070
+ Exception exception = Assert .assertThrows (com .itextpdf .io .IOException .class ,
2071
+ () -> new PdfDocument (new PdfReader (fileName )));
2072
+ Assert .assertEquals (MessageFormatUtil .format (KernelExceptionMessageConstant .UNEXPECTED_TOKEN , "]" ),
2073
+ exception .getCause ().getMessage ());
2074
+ }
2075
+
2076
+ @ Test
2077
+ public void endDicClosingBracketInsideTheDicTest () {
2078
+ String fileName = sourceFolder + "endDicClosingBracketInsideTheDic.pdf" ;
2079
+ Exception exception = Assert .assertThrows (com .itextpdf .io .IOException .class ,
2080
+ () -> new PdfDocument (new PdfReader (fileName )));
2081
+ Assert .assertEquals (MessageFormatUtil .format (KernelExceptionMessageConstant .UNEXPECTED_TOKEN , ">>" ),
2082
+ exception .getCause ().getMessage ());
2083
+ }
2084
+
2085
+ @ Test
2086
+ @ LogMessages (messages = {
2087
+ @ LogMessage (messageTemplate = KernelExceptionMessageConstant .UNEXPECTED_TOKEN )
2088
+ })
2089
+ public void eofInsteadOfArrayClosingBracketTest () throws IOException {
2090
+ String fileName = sourceFolder + "invalidArrayEOFToken.pdf" ;
2091
+ PdfDocument document = new PdfDocument (new PdfReader (fileName ));
2092
+ PdfArray actual = (PdfArray ) document .getPdfObject (4 );
2093
+ PdfArray expected = new PdfArray (new float []{5 , 10 , 15 , 20 });
2094
+ for (int i = 0 ; i < expected .size (); i ++) {
2095
+ Assert .assertEquals (expected .get (i ), actual .get (i ));
2096
+ }
2097
+ }
2098
+
2099
+ @ Test
2100
+ @ LogMessages (messages = {
2101
+ @ LogMessage (messageTemplate = KernelExceptionMessageConstant .UNEXPECTED_TOKEN )
2102
+ })
2103
+ public void endObjInsteadOfArrayClosingBracketTest () throws IOException {
2104
+ String fileName = sourceFolder + "invalidArrayEndObjToken.pdf" ;
2105
+ PdfDocument document = new PdfDocument (new PdfReader (fileName ));
2106
+ PdfArray actual = (PdfArray ) document .getPdfObject (4 );
2107
+ PdfArray expected = new PdfArray (new float []{5 , 10 , 15 , 20 });
2108
+ for (int i = 0 ; i < expected .size (); i ++) {
2109
+ Assert .assertEquals (expected .get (i ), actual .get (i ));
2110
+ }
2111
+ }
2112
+
2113
+ @ Test
2114
+ @ LogMessages (messages = {
2115
+ @ LogMessage (messageTemplate = KernelExceptionMessageConstant .UNEXPECTED_TOKEN ),
2116
+ @ LogMessage (messageTemplate = LogMessageConstant .XREF_ERROR_WHILE_READING_TABLE_WILL_BE_REBUILT )
2117
+ })
2118
+ public void nameInsteadOfArrayClosingBracketTest () throws IOException {
2119
+ String fileName = sourceFolder + "invalidArrayNameToken.pdf" ;
2120
+ PdfDocument document = new PdfDocument (new PdfReader (fileName ));
2121
+ PdfArray actual = (PdfArray ) document .getPdfObject (4 );
2122
+ PdfArray expected = new PdfArray (new float []{5 , 10 , 15 , 20 });
2123
+ for (int i = 0 ; i < expected .size (); i ++) {
2124
+ Assert .assertEquals (expected .get (i ), actual .get (i ));
2125
+ }
2126
+ }
2127
+
2128
+ @ Test
2129
+ @ LogMessages (messages = {
2130
+ @ LogMessage (messageTemplate = KernelExceptionMessageConstant .UNEXPECTED_TOKEN )
2131
+ })
2132
+ public void objInsteadOfArrayClosingBracketTest () throws IOException {
2133
+ String fileName = sourceFolder + "invalidArrayObjToken.pdf" ;
2134
+ PdfDocument document = new PdfDocument (new PdfReader (fileName ));
2135
+ PdfArray actual = (PdfArray ) document .getPdfObject (4 );
2136
+ PdfArray expected = new PdfArray (new float []{5 , 10 , 15 , 20 });
2137
+ for (int i = 0 ; i < expected .size (); i ++) {
2138
+ Assert .assertEquals (expected .get (i ), actual .get (i ));
2139
+ }
2140
+ }
2141
+
2142
+ @ Test
2143
+ @ LogMessages (messages = {
2144
+ @ LogMessage (messageTemplate = KernelExceptionMessageConstant .UNEXPECTED_TOKEN )
2145
+ })
2146
+ public void refInsteadOfArrayClosingBracketTest () throws IOException {
2147
+ String fileName = sourceFolder + "invalidArrayRefToken.pdf" ;
2148
+ PdfDocument document = new PdfDocument (new PdfReader (fileName ));
2149
+ PdfArray actual = (PdfArray ) document .getPdfObject (4 );
2150
+ PdfArray expected = new PdfArray (new float []{5 , 10 , 15 , 20 });
2151
+ for (int i = 0 ; i < expected .size (); i ++) {
2152
+ Assert .assertEquals (expected .get (i ), actual .get (i ));
2153
+ }
2154
+ }
2155
+
2156
+ @ Test
2157
+ @ LogMessages (messages = {
2158
+ @ LogMessage (messageTemplate = KernelExceptionMessageConstant .UNEXPECTED_TOKEN , count = 2 )
2159
+ })
2160
+ public void startArrayInsteadOfArrayClosingBracketTest () throws IOException {
2161
+ String fileName = sourceFolder + "invalidArrayStartArrayToken.pdf" ;
2162
+ PdfDocument document = new PdfDocument (new PdfReader (fileName ));
2163
+ PdfArray actual = (PdfArray ) document .getPdfObject (4 );
2164
+ PdfArray expected = new PdfArray (new float []{5 , 10 , 15 , 20 });
2165
+ for (int i = 0 ; i < expected .size (); i ++) {
2166
+ Assert .assertEquals (expected .get (i ), actual .get (i ));
2167
+ }
2168
+ }
2169
+
2170
+ @ Test
2171
+ @ LogMessages (messages = {
2172
+ @ LogMessage (messageTemplate = KernelExceptionMessageConstant .UNEXPECTED_TOKEN ),
2173
+ @ LogMessage (messageTemplate = LogMessageConstant .XREF_ERROR_WHILE_READING_TABLE_WILL_BE_REBUILT )
2174
+ })
2175
+ public void stringInsteadOfArrayClosingBracketTest () throws IOException {
2176
+ String fileName = sourceFolder + "invalidArrayStringToken.pdf" ;
2177
+ PdfDocument document = new PdfDocument (new PdfReader (fileName ));
2178
+ PdfArray actual = (PdfArray ) document .getPdfObject (4 );
2179
+ PdfArray expected = new PdfArray (new float []{5 , 10 , 15 , 20 });
2180
+ for (int i = 0 ; i < expected .size (); i ++) {
2181
+ Assert .assertEquals (expected .get (i ), actual .get (i ));
2182
+ }
2183
+ }
2184
+
2185
+ @ Test
2186
+ public void closingArrayBracketMissingConservativeTest () throws IOException {
2187
+ String fileName = sourceFolder + "invalidArrayObjToken.pdf" ;
2188
+ PdfReader reader = new PdfReader (fileName );
2189
+ reader .setStrictnessLevel (StrictnessLevel .CONSERVATIVE );
2190
+ PdfDocument document = new PdfDocument (reader );
2191
+ Exception exception = Assert .assertThrows (com .itextpdf .io .IOException .class ,
2192
+ () -> document .getPdfObject (4 ));
2193
+ Assert .assertEquals (MessageFormatUtil .format (KernelExceptionMessageConstant .UNEXPECTED_TOKEN , "obj" ),
2194
+ exception .getCause ().getMessage ());
2195
+ }
2196
+
2053
2197
private static File copyFileForTest (String fileName , String copiedFileName ) throws IOException {
2054
2198
File copiedFile = new File (copiedFileName );
2055
2199
Files .copy (Paths .get (fileName ), Paths .get (copiedFileName ));
0 commit comments