Index: testing/resources/javascript/document_methods.in |
diff --git a/testing/resources/javascript/document_methods.in b/testing/resources/javascript/document_methods.in |
new file mode 100644 |
index 0000000000000000000000000000000000000000..662c05c8e05bfb8f2f9a3d77e3405389d3b69128 |
--- /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 |