diff options
Diffstat (limited to 'testing/resources/javascript/document_methods.in')
-rw-r--r-- | testing/resources/javascript/document_methods.in | 340 |
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 |