Merge pull request #7951 from Snuffleupagus/FileAttachmentAnnotation-simplified-unittest
Rename `annotation_layer_spec.js` to `annotation_spec.js` to better describe what is actually tested, and simplify the `FileAttachmentAnnotation` unit-test to avoid having to use the entire API in the test
This commit is contained in:
commit
c0d7029039
@ -16,23 +16,21 @@
|
|||||||
|
|
||||||
(function (root, factory) {
|
(function (root, factory) {
|
||||||
if (typeof define === 'function' && define.amd) {
|
if (typeof define === 'function' && define.amd) {
|
||||||
define('pdfjs-test/unit/annotation_layer_spec', ['exports',
|
define('pdfjs-test/unit/annotation_spec', ['exports',
|
||||||
'pdfjs/core/primitives', 'pdfjs/core/annotation', 'pdfjs/core/stream',
|
'pdfjs/core/primitives', 'pdfjs/core/annotation', 'pdfjs/core/stream',
|
||||||
'pdfjs/core/parser', 'pdfjs/shared/util', 'pdfjs/display/global'],
|
'pdfjs/core/parser', 'pdfjs/shared/util'], factory);
|
||||||
factory);
|
|
||||||
} else if (typeof exports !== 'undefined') {
|
} else if (typeof exports !== 'undefined') {
|
||||||
factory(exports, require('../../src/core/primitives.js'),
|
factory(exports, require('../../src/core/primitives.js'),
|
||||||
require('../../src/core/annotation.js'),
|
require('../../src/core/annotation.js'),
|
||||||
require('../../src/core/stream.js'), require('../../src/core/parser.js'),
|
require('../../src/core/stream.js'), require('../../src/core/parser.js'),
|
||||||
require('../../src/shared/util.js'),
|
require('../../src/shared/util.js'));
|
||||||
require('../../src/display/global.js'));
|
|
||||||
} else {
|
} else {
|
||||||
factory((root.pdfjsTestUnitAnnotationLayerSpec = {}),
|
factory((root.pdfjsTestUnitAnnotationSpec = {}),
|
||||||
root.pdfjsCorePrimitives, root.pdfjsCoreAnnotation, root.pdfjsCoreStream,
|
root.pdfjsCorePrimitives, root.pdfjsCoreAnnotation, root.pdfjsCoreStream,
|
||||||
root.pdfjsCoreParser, root.pdfjsSharedUtil, root.pdfjsDisplayGlobal);
|
root.pdfjsCoreParser, root.pdfjsSharedUtil);
|
||||||
}
|
}
|
||||||
}(this, function (exports, corePrimitives, coreAnnotation, coreStream,
|
}(this, function (exports, corePrimitives, coreAnnotation, coreStream,
|
||||||
coreParser, sharedUtil, displayGlobal) {
|
coreParser, sharedUtil) {
|
||||||
|
|
||||||
var Annotation = coreAnnotation.Annotation;
|
var Annotation = coreAnnotation.Annotation;
|
||||||
var AnnotationBorderStyle = coreAnnotation.AnnotationBorderStyle;
|
var AnnotationBorderStyle = coreAnnotation.AnnotationBorderStyle;
|
||||||
@ -44,7 +42,6 @@ var Dict = corePrimitives.Dict;
|
|||||||
var Name = corePrimitives.Name;
|
var Name = corePrimitives.Name;
|
||||||
var Ref = corePrimitives.Ref;
|
var Ref = corePrimitives.Ref;
|
||||||
var StringStream = coreStream.StringStream;
|
var StringStream = coreStream.StringStream;
|
||||||
var PDFJS = displayGlobal.PDFJS;
|
|
||||||
var AnnotationType = sharedUtil.AnnotationType;
|
var AnnotationType = sharedUtil.AnnotationType;
|
||||||
var AnnotationFlag = sharedUtil.AnnotationFlag;
|
var AnnotationFlag = sharedUtil.AnnotationFlag;
|
||||||
var AnnotationBorderStyleType = sharedUtil.AnnotationBorderStyleType;
|
var AnnotationBorderStyleType = sharedUtil.AnnotationBorderStyleType;
|
||||||
@ -52,7 +49,7 @@ var AnnotationFieldFlag = sharedUtil.AnnotationFieldFlag;
|
|||||||
var stringToBytes = sharedUtil.stringToBytes;
|
var stringToBytes = sharedUtil.stringToBytes;
|
||||||
var stringToUTF8String = sharedUtil.stringToUTF8String;
|
var stringToUTF8String = sharedUtil.stringToUTF8String;
|
||||||
|
|
||||||
describe('Annotation layer', function() {
|
describe('annotation', function() {
|
||||||
function XRefMock(array) {
|
function XRefMock(array) {
|
||||||
this.map = Object.create(null);
|
this.map = Object.create(null);
|
||||||
for (var elem in array) {
|
for (var elem in array) {
|
||||||
@ -1211,33 +1208,56 @@ describe('Annotation layer', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('FileAttachmentAnnotation', function() {
|
describe('FileAttachmentAnnotation', function() {
|
||||||
var loadingTask;
|
|
||||||
var annotations;
|
|
||||||
|
|
||||||
beforeEach(function(done) {
|
|
||||||
var pdfUrl = new URL('../pdfs/annotation-fileattachment.pdf',
|
|
||||||
window.location).href;
|
|
||||||
loadingTask = PDFJS.getDocument(pdfUrl);
|
|
||||||
loadingTask.promise.then(function(pdfDocument) {
|
|
||||||
return pdfDocument.getPage(1).then(function(pdfPage) {
|
|
||||||
return pdfPage.getAnnotations().then(function (pdfAnnotations) {
|
|
||||||
annotations = pdfAnnotations;
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}).catch(function (reason) {
|
|
||||||
done.fail(reason);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(function() {
|
|
||||||
loadingTask.destroy();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should correctly parse a file attachment', function() {
|
it('should correctly parse a file attachment', function() {
|
||||||
var annotation = annotations[0];
|
var fileStream = new StringStream(
|
||||||
expect(annotation.file.filename).toEqual('Test.txt');
|
'<<\n' +
|
||||||
expect(annotation.file.content).toEqual(stringToBytes('Test attachment'));
|
'/Type /EmbeddedFile\n' +
|
||||||
|
'/Subtype /text#2Fplain\n' +
|
||||||
|
'>>\n' +
|
||||||
|
'stream\n' +
|
||||||
|
'Test attachment' +
|
||||||
|
'endstream\n'
|
||||||
|
);
|
||||||
|
var lexer = new Lexer(fileStream);
|
||||||
|
var parser = new Parser(lexer, /* allowStreams = */ true);
|
||||||
|
|
||||||
|
var fileStreamRef = new Ref(18, 0);
|
||||||
|
var fileStreamDict = parser.getObj();
|
||||||
|
|
||||||
|
var embeddedFileDict = new Dict();
|
||||||
|
embeddedFileDict.set('F', fileStreamRef);
|
||||||
|
|
||||||
|
var fileSpecRef = new Ref(19, 0);
|
||||||
|
var fileSpecDict = new Dict();
|
||||||
|
fileSpecDict.set('Type', Name.get('Filespec'));
|
||||||
|
fileSpecDict.set('Desc', '');
|
||||||
|
fileSpecDict.set('EF', embeddedFileDict);
|
||||||
|
fileSpecDict.set('UF', 'Test.txt');
|
||||||
|
|
||||||
|
var fileAttachmentRef = new Ref(20, 0);
|
||||||
|
var fileAttachmentDict = new Dict();
|
||||||
|
fileAttachmentDict.set('Type', Name.get('Annot'));
|
||||||
|
fileAttachmentDict.set('Subtype', Name.get('FileAttachment'));
|
||||||
|
fileAttachmentDict.set('FS', fileSpecRef);
|
||||||
|
fileAttachmentDict.set('T', 'Topic');
|
||||||
|
fileAttachmentDict.set('Contents', 'Test.txt');
|
||||||
|
|
||||||
|
var xref = new XRefMock([
|
||||||
|
{ ref: fileStreamRef, data: fileStreamDict, },
|
||||||
|
{ ref: fileSpecRef, data: fileSpecDict, },
|
||||||
|
{ ref: fileAttachmentRef, data: fileAttachmentDict, }
|
||||||
|
]);
|
||||||
|
embeddedFileDict.assignXref(xref);
|
||||||
|
fileSpecDict.assignXref(xref);
|
||||||
|
fileAttachmentDict.assignXref(xref);
|
||||||
|
|
||||||
|
var annotation = annotationFactory.create(xref, fileAttachmentRef,
|
||||||
|
pdfManagerMock, idFactoryMock);
|
||||||
|
var data = annotation.data;
|
||||||
|
expect(data.annotationType).toEqual(AnnotationType.FILEATTACHMENT);
|
||||||
|
|
||||||
|
expect(data.file.filename).toEqual('Test.txt');
|
||||||
|
expect(data.file.content).toEqual(stringToBytes('Test attachment'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"spec_dir": "test/unit",
|
"spec_dir": "test/unit",
|
||||||
"spec_files": [
|
"spec_files": [
|
||||||
|
"annotation_spec.js",
|
||||||
"bidi_spec.js",
|
"bidi_spec.js",
|
||||||
"cff_parser_spec.js",
|
"cff_parser_spec.js",
|
||||||
"crypto_spec.js",
|
"crypto_spec.js",
|
||||||
|
@ -45,7 +45,7 @@ var pdfjsLibs;
|
|||||||
function initializePDFJS(callback) {
|
function initializePDFJS(callback) {
|
||||||
require.config({paths: {'pdfjs': '../../src', 'pdfjs-web': '../../web',
|
require.config({paths: {'pdfjs': '../../src', 'pdfjs-web': '../../web',
|
||||||
'pdfjs-test': '..'}});
|
'pdfjs-test': '..'}});
|
||||||
require(['pdfjs/display/global', 'pdfjs-test/unit/annotation_layer_spec',
|
require(['pdfjs/display/global', 'pdfjs-test/unit/annotation_spec',
|
||||||
'pdfjs-test/unit/api_spec', 'pdfjs-test/unit/bidi_spec',
|
'pdfjs-test/unit/api_spec', 'pdfjs-test/unit/bidi_spec',
|
||||||
'pdfjs-test/unit/cff_parser_spec', 'pdfjs-test/unit/cmap_spec',
|
'pdfjs-test/unit/cff_parser_spec', 'pdfjs-test/unit/cmap_spec',
|
||||||
'pdfjs-test/unit/crypto_spec', 'pdfjs-test/unit/document_spec',
|
'pdfjs-test/unit/crypto_spec', 'pdfjs-test/unit/document_spec',
|
||||||
@ -57,7 +57,7 @@ function initializePDFJS(callback) {
|
|||||||
'pdfjs-test/unit/type1_parser_spec',
|
'pdfjs-test/unit/type1_parser_spec',
|
||||||
'pdfjs-test/unit/ui_utils_spec', 'pdfjs-test/unit/unicode_spec',
|
'pdfjs-test/unit/ui_utils_spec', 'pdfjs-test/unit/unicode_spec',
|
||||||
'pdfjs-test/unit/util_spec'],
|
'pdfjs-test/unit/util_spec'],
|
||||||
function (displayGlobal, testUnitAnnotationLayerSpec, testUnitApiSpec,
|
function (displayGlobal, testUnitAnnotationSpec, testUnitApiSpec,
|
||||||
testUnitBidiSpec, testUnitCFFParserSpec, testUnitCMapSpec,
|
testUnitBidiSpec, testUnitCFFParserSpec, testUnitCMapSpec,
|
||||||
testUnitCryptoSpec, testUnitDocumentSpec, testUnitDOMUtilsSpec,
|
testUnitCryptoSpec, testUnitDocumentSpec, testUnitDOMUtilsSpec,
|
||||||
testUnitEvaluatorSpec, testUnitFontsSpec, testUnitFunctionSpec,
|
testUnitEvaluatorSpec, testUnitFontsSpec, testUnitFunctionSpec,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user