Skip to content

Commit 7b647d2

Browse files
Eugene BochiloiText-CI
authored andcommitted
Support StructTreeRoot comparison, fix minor bugs
DEVSIX-8413 Autoported commit. Original commit hash: [e0488e9f9]
1 parent cdea893 commit 7b647d2

File tree

18 files changed

+666
-33
lines changed

18 files changed

+666
-33
lines changed

itext.tests/itext.io.tests/itext/io/source/PdfTokenizerTest.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,23 @@ public virtual void GetNextEofLongTextTest() {
195195
}
196196
}
197197

198+
[NUnit.Framework.Test]
199+
public virtual void GetNextEofWhichIsCutTest() {
200+
StringBuilder stringBuilder = new StringBuilder();
201+
// We append 'a' 124 times because buffer has 128 bytes length.
202+
// This way '%%EOF' is cut and first string only contains '%%EO'
203+
for (int i = 0; i < 124; ++i) {
204+
stringBuilder.Append("a");
205+
}
206+
stringBuilder.Append("%%EOF");
207+
RandomAccessSourceFactory factory = new RandomAccessSourceFactory();
208+
using (PdfTokenizer tok = new PdfTokenizer(new RandomAccessFileOrArray(factory.CreateSource(stringBuilder.
209+
ToString().GetBytes(iText.Commons.Utils.EncodingUtil.ISO_8859_1))))) {
210+
long eofPosition = tok.GetNextEof();
211+
NUnit.Framework.Assert.AreEqual(124 + 6, eofPosition);
212+
}
213+
}
214+
198215
[NUnit.Framework.Test]
199216
public virtual void GetNextEofSeveralEofTest() {
200217
String data = "some text %%EOFto test \nget%%EOFting end of\n fil%%EOFe logic%%EOF";
@@ -206,6 +223,16 @@ public virtual void GetNextEofSeveralEofTest() {
206223
}
207224
}
208225

226+
[NUnit.Framework.Test]
227+
public virtual void GetNextEofNoEofTest() {
228+
String data = "some text to test \ngetting end of\n file logic";
229+
RandomAccessSourceFactory factory = new RandomAccessSourceFactory();
230+
using (PdfTokenizer tok = new PdfTokenizer(new RandomAccessFileOrArray(factory.CreateSource(data.GetBytes(
231+
iText.Commons.Utils.EncodingUtil.ISO_8859_1))))) {
232+
NUnit.Framework.Assert.Catch(typeof(iText.IO.Exceptions.IOException), () => tok.GetNextEof());
233+
}
234+
}
235+
209236
[NUnit.Framework.Test]
210237
public virtual void GetDecodedStringContentTest() {
211238
String data = "/Name1 15";

itext.tests/itext.kernel.tests/itext/kernel/pdf/PdfRevisionsReaderTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ public virtual void DocumentWithStreamAndTableXref() {
161161
NUnit.Framework.Assert.AreEqual(1381, thirdRevision.GetEofOffset());
162162
DocumentRevision secondRevision = revisionsReader.GetAllRevisions()[1];
163163
AssertResultingRevision(secondRevision, 1, 2, 3, 4, 5, 6, 7, 8);
164-
NUnit.Framework.Assert.AreEqual(1550, secondRevision.GetEofOffset());
164+
NUnit.Framework.Assert.AreEqual(1381, secondRevision.GetEofOffset());
165165
DocumentRevision firstRevision = revisionsReader.GetAllRevisions()[2];
166166
AssertResultingRevision(firstRevision);
167167
NUnit.Framework.Assert.AreEqual(1550, firstRevision.GetEofOffset());

itext.tests/itext.sign.tests/itext/signatures/validation/v1/DocumentRevisionsValidatorIntegrationTest.cs

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,105 @@ public virtual void RemoveAllTheFieldAnnotationsTest() {
410410
}
411411
}
412412

413+
[NUnit.Framework.Test]
414+
public virtual void SimpleTaggedDocTest() {
415+
using (PdfDocument document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "simpleTaggedDoc.pdf"))) {
416+
DocumentRevisionsValidator validator = builder.BuildDocumentRevisionsValidator();
417+
ValidationReport report = validator.ValidateAllDocumentRevisions(validationContext, document);
418+
AssertValidationReport.AssertThat(report, (a) => a.HasStatus(ValidationReport.ValidationResult.VALID).HasNumberOfLogs
419+
(0));
420+
}
421+
}
422+
423+
[NUnit.Framework.Test]
424+
public virtual void TaggedDocAddAndRemoveAnnotationsTest() {
425+
using (PdfDocument document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "taggedDocAddAndRemoveAnnotations.pdf"
426+
))) {
427+
DocumentRevisionsValidator validator = builder.BuildDocumentRevisionsValidator();
428+
ValidationReport report = validator.ValidateAllDocumentRevisions(validationContext, document);
429+
// Annotations were removed, but were also considered modified objects and therefore are added to xref table.
430+
AssertValidationReport.AssertThat(report, (a) => a.HasStatus(ValidationReport.ValidationResult.VALID).HasNumberOfLogs
431+
(2).HasLogItem((l) => l.WithCheckName(DocumentRevisionsValidator.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator
432+
.UNEXPECTED_ENTRY_IN_XREF, (m) => "18").WithStatus(ReportItem.ReportItemStatus.INFO)).HasLogItem((l) =>
433+
l.WithCheckName(DocumentRevisionsValidator.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator.UNEXPECTED_ENTRY_IN_XREF
434+
, (m) => "50").WithStatus(ReportItem.ReportItemStatus.INFO)));
435+
}
436+
}
437+
438+
[NUnit.Framework.Test]
439+
public virtual void TaggedDocRemoveStructTreeElementTest() {
440+
using (PdfDocument document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "taggedDocRemoveStructTreeElement.pdf"
441+
))) {
442+
DocumentRevisionsValidator validator = builder.BuildDocumentRevisionsValidator();
443+
ValidationReport report = validator.ValidateAllDocumentRevisions(validationContext, document);
444+
AssertValidationReport.AssertThat(report, (a) => a.HasStatus(ValidationReport.ValidationResult.INVALID).HasNumberOfFailures
445+
(1).HasLogItem((l) => l.WithCheckName(DocumentRevisionsValidator.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator
446+
.STRUCT_TREE_ROOT_MODIFIED).WithStatus(ReportItem.ReportItemStatus.INVALID)));
447+
}
448+
}
449+
450+
[NUnit.Framework.Test]
451+
public virtual void TaggedDocRemoveStructTreeAnnotationTest() {
452+
using (PdfDocument document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "taggedDocRemoveStructTreeAnnotation.pdf"
453+
))) {
454+
DocumentRevisionsValidator validator = builder.BuildDocumentRevisionsValidator();
455+
ValidationReport report = validator.ValidateAllDocumentRevisions(validationContext, document);
456+
AssertValidationReport.AssertThat(report, (a) => a.HasStatus(ValidationReport.ValidationResult.INVALID).HasNumberOfFailures
457+
(1).HasLogItem((l) => l.WithCheckName(DocumentRevisionsValidator.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator
458+
.STRUCT_TREE_ROOT_MODIFIED).WithStatus(ReportItem.ReportItemStatus.INVALID)));
459+
}
460+
}
461+
462+
[NUnit.Framework.Test]
463+
public virtual void TaggedDocModifyAnnotationTest() {
464+
using (PdfDocument document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "taggedDocModifyAnnotation.pdf"
465+
))) {
466+
DocumentRevisionsValidator validator = builder.BuildDocumentRevisionsValidator();
467+
ValidationReport report = validator.ValidateAllDocumentRevisions(validationContext, document);
468+
AssertValidationReport.AssertThat(report, (a) => a.HasStatus(ValidationReport.ValidationResult.VALID).HasNumberOfLogs
469+
(0));
470+
}
471+
}
472+
473+
[NUnit.Framework.Test]
474+
public virtual void TaggedDocModifyAnnotationAndStructElementTest() {
475+
using (PdfDocument document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "taggedDocModifyAnnotationAndStructElement.pdf"
476+
))) {
477+
DocumentRevisionsValidator validator = builder.BuildDocumentRevisionsValidator();
478+
ValidationReport report = validator.ValidateAllDocumentRevisions(validationContext, document);
479+
AssertValidationReport.AssertThat(report, (a) => a.HasStatus(ValidationReport.ValidationResult.INVALID).HasNumberOfFailures
480+
(2).HasLogItem((l) => l.WithCheckName(DocumentRevisionsValidator.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator
481+
.STRUCT_TREE_ROOT_MODIFIED).WithStatus(ReportItem.ReportItemStatus.INVALID)).HasLogItem((l) => l.WithCheckName
482+
(DocumentRevisionsValidator.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator.STRUCT_TREE_ELEMENT_MODIFIED
483+
).WithStatus(ReportItem.ReportItemStatus.INVALID)));
484+
}
485+
}
486+
487+
[NUnit.Framework.Test]
488+
public virtual void TaggedDocModifyAnnotationAndStructContentTest() {
489+
using (PdfDocument document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "taggedDocModifyAnnotationAndStructContent.pdf"
490+
))) {
491+
DocumentRevisionsValidator validator = builder.BuildDocumentRevisionsValidator();
492+
ValidationReport report = validator.ValidateAllDocumentRevisions(validationContext, document);
493+
AssertValidationReport.AssertThat(report, (a) => a.HasStatus(ValidationReport.ValidationResult.VALID).HasNumberOfLogs
494+
(0));
495+
}
496+
}
497+
498+
[NUnit.Framework.Test]
499+
public virtual void TaggedDocModifyStructElementTest() {
500+
using (PdfDocument document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "taggedDocModifyStructElement.pdf"
501+
))) {
502+
DocumentRevisionsValidator validator = builder.BuildDocumentRevisionsValidator();
503+
ValidationReport report = validator.ValidateAllDocumentRevisions(validationContext, document);
504+
AssertValidationReport.AssertThat(report, (a) => a.HasStatus(ValidationReport.ValidationResult.INVALID).HasNumberOfFailures
505+
(2).HasLogItem((l) => l.WithCheckName(DocumentRevisionsValidator.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator
506+
.STRUCT_TREE_ROOT_MODIFIED).WithStatus(ReportItem.ReportItemStatus.INVALID)).HasLogItem((l) => l.WithCheckName
507+
(DocumentRevisionsValidator.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator.STRUCT_TREE_ELEMENT_MODIFIED
508+
).WithStatus(ReportItem.ReportItemStatus.INVALID)));
509+
}
510+
}
511+
413512
[NUnit.Framework.Test]
414513
public virtual void RemoveUnnamedFieldTest() {
415514
using (PdfDocument document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "removeUnnamedField.pdf"))) {

itext.tests/itext.sign.tests/itext/signatures/validation/v1/DocumentRevisionsValidatorTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ public virtual void ExtensionsModificationsTest() {
134134
);
135135
AssertValidationReport.AssertThat(validationReport, (a) => a.HasStatus(ValidationReport.ValidationResult.INVALID
136136
).HasNumberOfFailures(1).HasNumberOfLogs(1).HasLogItem((l) => l.WithCheckName(DocumentRevisionsValidator
137-
.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator.DEVELOPER_EXTENSION_REMOVED, (i) => PdfName.ESIC
138-
).WithStatus(ReportItem.ReportItemStatus.INVALID)));
137+
.DOC_MDP_CHECK).WithMessage(DocumentRevisionsValidator.BASE_VERSION_DECREASED, (i) => PdfName.ESIC).WithStatus
138+
(ReportItem.ReportItemStatus.INVALID)));
139139
validationReport = new ValidationReport();
140140
validator.ValidateRevision(documentRevisions[2], documentRevisions[3], document, validationReport, validationContext
141141
);

0 commit comments

Comments
 (0)