summaryrefslogtreecommitdiff
path: root/testing/resources/javascript/document_methods.in
diff options
context:
space:
mode:
Diffstat (limited to 'testing/resources/javascript/document_methods.in')
-rw-r--r--testing/resources/javascript/document_methods.in340
1 files changed, 340 insertions, 0 deletions
diff --git a/testing/resources/javascript/document_methods.in b/testing/resources/javascript/document_methods.in
new file mode 100644
index 0000000000..662c05c8e0
--- /dev/null
+++ b/testing/resources/javascript/document_methods.in
@@ -0,0 +1,340 @@
+{{header}}
+{{object 1 0}} <<
+ /Type /Catalog
+ /Pages 2 0 R
+ /OpenAction 10 0 R
+>>
+endobj
+{{object 2 0}} <<
+ /Type /Pages
+ /Count 4
+ /Kids [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ 6 0 R
+ ]
+>>
+endobj
+% Page number 0.
+{{object 3 0}} <<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources <<
+ /Font <</F1 15 0 R>>
+ >>
+ /MediaBox [0 0 612 792]
+ /Contents 8 0 R
+>>
+% Page number 1.
+{{object 4 0}} <<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources <<
+ /Font <</F1 15 0 R>>
+ >>
+ /MediaBox [0 0 612 792]
+>>
+% Page number 2.
+{{object 5 0}} <<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources <<
+ /Font <</F1 15 0 R>>
+ >>
+ /MediaBox [0 0 612 792]
+>>
+% Page number 3.
+{{object 6 0}} <<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources <<
+ /Font <</F1 15 0 R>>
+ >>
+ /MediaBox [0 0 612 792]
+>>
+% Contents of the page.
+{{object 8 0}} <<
+>>
+stream
+BT
+20 50 Td
+/F1 12 Tf
+(Hello, world!) Tj
+0 50 Td
+endstream
+endobj
+% Info
+{{object 9 0}} <<
+ /Author (Joe Random Author)
+ /Creator (Joe Random Creator)
+>>
+endobj
+% OpenAction action
+{{object 10 0}} <<
+ /Type /Action
+ /S /JavaScript
+ /JS 11 0 R
+>>
+endobj
+% JS program to exexute
+{{object 11 0}} <<
+>>
+stream
+function expect(str, expected) {
+ try {
+ var result = eval(str);
+ if (result == expected) {
+ app.alert('PASS: ' + str + ' = ' + result);
+ } else {
+ app.alert('FAIL: ' + str + ' = ' + result + ', expected = ' + expected);
+ }
+ } catch (e) {
+ app.alert('ERROR: ' + e.toString());
+ }
+}
+
+function expectError(str) {
+ try {
+ var result = eval(str);
+ app.alert('FAIL: ' + str + ' = ' + result + ', expected to throw error');
+ } catch (e) {
+ app.alert('PASS: ' + str + ' threw error ' + e.toString());
+ }
+}
+
+// "Unsupported" methods are present in the document object, but not
+// implemented. They always return |undefined| regardless of arguments.
+function testUnsupported(str) {
+ expect('typeof ' + str, 'function');
+ expect(str + '()', undefined);
+ expect(str + '(1, 2, "clams", [1, 2, 3])', undefined);
+}
+
+function testAddIcon() {
+ // Method is present.
+ expect('typeof this.addIcon', 'function');
+
+ // Method takes exactly two arguments.
+ expectError('this.addIcon()');
+ expectError('this.addIcon(1)');
+ expectError('this.addIcon(1, 2, 3)');
+
+ // Second argument must actually be an icon.
+ expectError('this.addIcon("myicon", 3)');
+
+ // TODO(tsepez): test success cases.
+}
+
+function testCalculateNow() {
+ // Method is present.
+ expect('typeof this.calculateNow', 'function');
+
+ // TODO(tsepez): test with no permissions.
+ // TODO(tsepez): test success cases.
+}
+
+function testDeletePages() {
+ // Method is present.
+ expect('typeof this.deletePages', 'function');
+
+ // TODO(tsepez): test with no permissions.
+ // TODO(tsepez): test success cases.
+}
+
+function testGetField() {
+ // Method is present.
+ expect('typeof this.getField', 'function');
+
+ // Method needs at least one argument.
+ expectError('this.getField()');
+
+ // TODO(tsepez): test success cases.
+}
+
+function testGetIcon() {
+ // Method is present.
+ expect('typeof this.getIcon', 'function');
+
+ // Method needs exactly one argument.
+ expectError('this.getIcon()');
+ expectError('this.getIcon(1, 2)');
+
+ // TODO(tsepez): test success cases.
+}
+
+function testGetNthFieldName() {
+ // Method is present.
+ expect('typeof this.getNthFieldName', 'function');
+
+ // Method needs at least one argument.
+ expectError('this.getNthFieldName()');
+
+ // Argument can not be negative.
+ expectError('this.getNthFieldName(-1)');
+
+ // TODO(tsepez): test success cases.
+}
+
+function testGetPageNthWord() {
+ // Method is present.
+ expect('typeof this.getPageNthWord', 'function');
+
+ // Method accepts any number of parameters.
+ expect('this.getPageNthWord(0, 0, true, "clams", [1, 2])', 'Hello,');
+
+ // Arguments can't be negative or out of range.
+ expectError('this.getPageNthWord(-1, 0, true)');
+ expectError('this.getPageNthWord(6, 0, true)');
+
+ // TODO(tsepez): test with no permissions.
+ // TODO(tsepez): test success cases.
+}
+
+function testGetPageNthWordQuads() {
+ // Method is present.
+ expect('typeof this.getPageNthWordQuads', 'function');
+
+ // TODO(tsepez): test with no permissions.
+ // TODO(tsepez): test success cases.
+}
+
+function testGetPageNumWords() {
+ // Method is present.
+ expect('typeof this.getPageNumWords', 'function');
+
+ // Method accepts any number of parameters.
+ expect('this.getPageNumWords(0, "clams", [1, 2])', 2);
+
+ // Arguments can't be negative or out of range.
+ expectError('this.getPageNumWords(-1)');
+ expectError('this.getPageNumWords(6)');
+
+ // TODO(tsepez): test with no permissions.
+ // TODO(tsepez): test success cases.
+}
+
+function testGetPrintParams() {
+ // Method is present.
+ expect('typeof this.getPrintParams', 'function');
+
+ // TODO(tsepez): test success cases.
+}
+
+function testMailDoc() {
+ // Method is present.
+ expect('typeof this.mailDoc', 'function');
+
+ // TODO(tsepez): test with no permissions.
+ // TODO(tsepez): test success cases.
+}
+
+function testMailForm() {
+ // Method is present.
+ expect('typeof this.mailForm', 'function');
+
+ // TODO(tsepez): test with no permissions.
+ // TODO(tsepez): test success cases.
+}
+
+function testPrint() {
+ // Method is present.
+ expect('typeof this.print', 'function');
+
+ // TODO(tsepez): test success cases.
+}
+
+function testRemoveField() {
+ // Method is present.
+ expect('typeof this.removeField', 'function');
+
+ // Method requires at least one argument.
+ expectError('this.removeField()');
+
+ // TODO(tsepez): test with no permissions.
+ // TODO(tsepez): test success cases.
+}
+
+function testRemoveIcon() {
+ // Method is present.
+ expect('typeof this.removeIcon', 'function');
+
+ // Method requires at least one argument.
+ expectError('this.removeIcon()');
+
+ // TODO(tsepez): test success cases.
+}
+
+function testResetForm() {
+ // Method is present.
+ expect('typeof this.resetForm', 'function');
+
+ // TODO(tsepez): test with no permissions.
+ // TODO(tsepez): test success cases.
+}
+
+function testSubmitForm() {
+ // Method is present.
+ expect('typeof this.submitForm', 'function');
+
+ // Method requires at least one argument.
+ expectError('this.submitForm()');
+
+ // TODO(tsepez): test success cases.
+}
+
+try {
+ app.alert('*** Testing Unsupported Methods ***');
+ testUnsupported('this.addAnnot');
+ testUnsupported('this.addField');
+ testUnsupported('this.addLink');
+ testUnsupported('this.closeDoc');
+ testUnsupported('this.createDataObject');
+ testUnsupported('this.exportAsFDF');
+ testUnsupported('this.exportAsText');
+ testUnsupported('this.exportAsXFDF');
+ testUnsupported('this.extractPages');
+ testUnsupported('this.getAnnot');
+ testUnsupported('this.getAnnot3D');
+ testUnsupported('this.getAnnots');
+ testUnsupported('this.getLinks');
+ testUnsupported('this.getOCGs');
+ testUnsupported('this.getPageBox');
+ testUnsupported('this.getURL');
+ testUnsupported('this.importAnFDF');
+ testUnsupported('this.importAnXFDF');
+ testUnsupported('this.importTextData');
+ testUnsupported('this.insertPages');
+ testUnsupported('this.replacePages');
+ testUnsupported('this.saveAs');
+
+ app.alert('*** Testing Supported Methods ***');
+ testAddIcon();
+ testCalculateNow();
+ testDeletePages();
+ testGetField();
+ testGetIcon();
+ testGetNthFieldName();
+ testGetPageNthWord();
+ testGetPageNthWordQuads();
+ testGetPageNumWords();
+ testGetPrintParams();
+ testMailDoc();
+ testMailForm();
+ testPrint();
+ testRemoveField();
+ testRemoveIcon();
+ testResetForm();
+ testSubmitForm();
+} catch (e) {
+ app.alert('FATAL: ' + e.toString());
+}
+endstream
+endobj
+{{xref}}
+trailer <<
+ /Root 1 0 R
+ /Info 9 0 R
+>>
+{{startxref}}
+%%EOF