You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
355 lines
7.9 KiB
355 lines
7.9 KiB
{{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)'); |
|
expectError('this.addIcon("myicon", undefined)'); |
|
|
|
// 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 testGetAnnot() { |
|
// Method is present. |
|
expect('typeof this.getAnnot', 'function'); |
|
|
|
// Method needs two arguments. |
|
expectError('this.getAnnot()'); |
|
expectError('this.getAnnot(0)'); |
|
expectError('this.getAnnot(0, "test", 0)'); |
|
|
|
// TODO(tonikitoo): test success cases. |
|
} |
|
|
|
function testGetAnnots() { |
|
// Method is present. |
|
expect('typeof this.getAnnots', 'function'); |
|
|
|
// TODO(tonikitoo): 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 testGotoNamedDest() { |
|
// Method is present. |
|
expect('typeof this.gotoNamedDest', 'function'); |
|
|
|
// Method needs exactly one argument. |
|
expectError('this.gotoNamedDest()'); |
|
expectError('this.gotoNamedDest(1, 2)'); |
|
|
|
// TODO(tonikitoo): 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 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.deletePages'); |
|
testUnsupported('this.exportAsFDF'); |
|
testUnsupported('this.exportAsText'); |
|
testUnsupported('this.exportAsXFDF'); |
|
testUnsupported('this.extractPages'); |
|
testUnsupported('this.getAnnot3D'); |
|
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.removeIcon'); |
|
testUnsupported('this.replacePages'); |
|
testUnsupported('this.saveAs'); |
|
testUnsupported('this.syncAnnotScan'); |
|
|
|
app.alert('*** Testing Supported Methods ***'); |
|
testAddIcon(); |
|
testCalculateNow(); |
|
testGetAnnot(); |
|
testGetAnnots(); |
|
testGetField(); |
|
testGetIcon(); |
|
testGetNthFieldName(); |
|
testGetPageNthWord(); |
|
testGetPageNthWordQuads(); |
|
testGetPageNumWords(); |
|
testGetPrintParams(); |
|
testGotoNamedDest(); |
|
testMailDoc(); |
|
testMailForm(); |
|
testPrint(); |
|
testRemoveField(); |
|
testResetForm(); |
|
testSubmitForm(); |
|
} catch (e) { |
|
app.alert('FATAL: ' + e.toString()); |
|
} |
|
endstream |
|
endobj |
|
{{xref}} |
|
trailer << |
|
/Root 1 0 R |
|
/Info 9 0 R |
|
>> |
|
{{startxref}} |
|
%%EOF
|
|
|