1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-26 10:08:06 +02:00

Choice widget annotations: unit and reference testing

This commit is contained in:
Tim van der Meij 2016-09-25 17:08:17 +02:00
parent d5d9f362aa
commit f85f3243b1
5 changed files with 188 additions and 2 deletions

View file

@ -581,6 +581,175 @@ describe('Annotation layer', function() {
});
});
describe('ChoiceWidgetAnnotation', function() {
var choiceWidgetDict;
beforeEach(function (done) {
choiceWidgetDict = new Dict();
choiceWidgetDict.set('Type', Name.get('Annot'));
choiceWidgetDict.set('Subtype', Name.get('Widget'));
choiceWidgetDict.set('FT', Name.get('Ch'));
done();
});
afterEach(function () {
choiceWidgetDict = null;
});
it('should handle missing option arrays', function() {
var choiceWidgetRef = new Ref(122, 0);
var xref = new XRefMock([
{ ref: choiceWidgetRef, data: choiceWidgetDict, }
]);
var choiceWidgetAnnotation = annotationFactory.create(xref,
choiceWidgetRef);
var data = choiceWidgetAnnotation.data;
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
expect(data.options).toEqual([]);
});
it('should handle option arrays with array elements', function() {
var options = [['foo_export', 'Foo'], ['bar_export', 'Bar']];
var expected = [
{
exportValue: 'foo_export',
displayValue: 'Foo'
},
{
exportValue: 'bar_export',
displayValue: 'Bar'
}
];
choiceWidgetDict.set('Opt', options);
var choiceWidgetRef = new Ref(123, 0);
var xref = new XRefMock([
{ ref: choiceWidgetRef, data: choiceWidgetDict, }
]);
var choiceWidgetAnnotation = annotationFactory.create(xref,
choiceWidgetRef);
var data = choiceWidgetAnnotation.data;
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
expect(data.options).toEqual(expected);
});
it('should handle option arrays with string elements', function() {
var options = ['Foo', 'Bar'];
var expected = [
{
exportValue: 'Foo',
displayValue: 'Foo'
},
{
exportValue: 'Bar',
displayValue: 'Bar'
}
];
choiceWidgetDict.set('Opt', options);
var choiceWidgetRef = new Ref(981, 0);
var xref = new XRefMock([
{ ref: choiceWidgetRef, data: choiceWidgetDict, }
]);
var choiceWidgetAnnotation = annotationFactory.create(xref,
choiceWidgetRef);
var data = choiceWidgetAnnotation.data;
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
expect(data.options).toEqual(expected);
});
it('should handle array field values', function() {
var fieldValue = ['Foo', 'Bar'];
choiceWidgetDict.set('V', fieldValue);
var choiceWidgetRef = new Ref(968, 0);
var xref = new XRefMock([
{ ref: choiceWidgetRef, data: choiceWidgetDict, }
]);
var choiceWidgetAnnotation = annotationFactory.create(xref,
choiceWidgetRef);
var data = choiceWidgetAnnotation.data;
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
expect(data.fieldValue).toEqual(fieldValue);
});
it('should handle string field values', function() {
var fieldValue = 'Foo';
choiceWidgetDict.set('V', fieldValue);
var choiceWidgetRef = new Ref(978, 0);
var xref = new XRefMock([
{ ref: choiceWidgetRef, data: choiceWidgetDict, }
]);
var choiceWidgetAnnotation = annotationFactory.create(xref,
choiceWidgetRef);
var data = choiceWidgetAnnotation.data;
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
expect(data.fieldValue).toEqual([fieldValue]);
});
it('should handle unknown flags', function() {
var choiceWidgetRef = new Ref(166, 0);
var xref = new XRefMock([
{ ref: choiceWidgetRef, data: choiceWidgetDict, }
]);
var choiceWidgetAnnotation = annotationFactory.create(xref,
choiceWidgetRef);
var data = choiceWidgetAnnotation.data;
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
expect(data.readOnly).toEqual(false);
expect(data.combo).toEqual(false);
expect(data.multiSelect).toEqual(false);
});
it('should not set invalid flags', function() {
choiceWidgetDict.set('Ff', 'readonly');
var choiceWidgetRef = new Ref(165, 0);
var xref = new XRefMock([
{ ref: choiceWidgetRef, data: choiceWidgetDict, }
]);
var choiceWidgetAnnotation = annotationFactory.create(xref,
choiceWidgetRef);
var data = choiceWidgetAnnotation.data;
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
expect(data.readOnly).toEqual(false);
expect(data.combo).toEqual(false);
expect(data.multiSelect).toEqual(false);
});
it('should set valid flags', function() {
choiceWidgetDict.set('Ff', AnnotationFieldFlag.READONLY +
AnnotationFieldFlag.COMBO +
AnnotationFieldFlag.MULTISELECT);
var choiceWidgetRef = new Ref(512, 0);
var xref = new XRefMock([
{ ref: choiceWidgetRef, data: choiceWidgetDict, }
]);
var choiceWidgetAnnotation = annotationFactory.create(xref,
choiceWidgetRef);
var data = choiceWidgetAnnotation.data;
expect(data.annotationType).toEqual(AnnotationType.WIDGET);
expect(data.readOnly).toEqual(true);
expect(data.combo).toEqual(true);
expect(data.multiSelect).toEqual(true);
});
});
describe('FileAttachmentAnnotation', function() {
var loadingTask;
var annotations;