Skip to content

Commit

Permalink
Choice widget annotations: unit and reference testing
Browse files Browse the repository at this point in the history
  • Loading branch information
timvandermeij committed Sep 25, 2016
1 parent 6e25aa2 commit bcfe533
Show file tree
Hide file tree
Showing 5 changed files with 172 additions and 2 deletions.
6 changes: 4 additions & 2 deletions test/annotation_layer_test.css
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@
}

.annotationLayer .textWidgetAnnotation input,
.annotationLayer .textWidgetAnnotation textarea {
.annotationLayer .textWidgetAnnotation textarea,
.annotationLayer .choiceWidgetAnnotation select {
background-color: rgba(0, 54, 255, 0.13);
border: 1px solid transparent;
box-sizing: border-box;
Expand All @@ -62,7 +63,8 @@
}

.annotationLayer .textWidgetAnnotation input[disabled],
.annotationLayer .textWidgetAnnotation textarea[disabled] {
.annotationLayer .textWidgetAnnotation textarea[disabled],
.annotationLayer .choiceWidgetAnnotation select[disabled] {
background: none;
border: 1px solid transparent;
}
Expand Down
1 change: 1 addition & 0 deletions test/pdfs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -255,4 +255,5 @@
!annotation-highlight.pdf
!annotation-fileattachment.pdf
!annotation-text-widget.pdf
!annotation-choice-widget.pdf
!zero_descent.pdf
Binary file added test/pdfs/annotation-choice-widget.pdf
Binary file not shown.
14 changes: 14 additions & 0 deletions test/test_manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3216,6 +3216,20 @@
"type": "eq",
"forms": true
},
{ "id": "annotation-choice-widget-annotations",
"file": "pdfs/annotation-choice-widget.pdf",
"md5": "7dfb0d743a0da0f4a71b209ab43b0be5",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-choice-widget-forms",
"file": "pdfs/annotation-choice-widget.pdf",
"md5": "7dfb0d743a0da0f4a71b209ab43b0be5",
"rounds": 1,
"type": "eq",
"forms": true
},
{ "id": "issue6108",
"file": "pdfs/issue6108.pdf",
"md5": "8961cb55149495989a80bf0487e0f076",
Expand Down
153 changes: 153 additions & 0 deletions test/unit/annotation_layer_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,159 @@ 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);
expect(choiceWidgetAnnotation.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);
expect(choiceWidgetAnnotation.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);
expect(choiceWidgetAnnotation.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);
expect(choiceWidgetAnnotation.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);
expect(choiceWidgetAnnotation.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);
expect(choiceWidgetAnnotation.data.readOnly).toEqual(false);
expect(choiceWidgetAnnotation.data.combo).toEqual(false);
expect(choiceWidgetAnnotation.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);
expect(choiceWidgetAnnotation.data.readOnly).toEqual(false);
expect(choiceWidgetAnnotation.data.combo).toEqual(false);
expect(choiceWidgetAnnotation.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);
expect(choiceWidgetAnnotation.data.readOnly).toEqual(true);
expect(choiceWidgetAnnotation.data.combo).toEqual(true);
expect(choiceWidgetAnnotation.data.multiSelect).toEqual(true);
});
});

describe('FileAttachmentAnnotation', function() {
var loadingTask;
var annotations;
Expand Down

0 comments on commit bcfe533

Please sign in to comment.