Fix Javascript tests after commit f55771af6429.
[pdfium.git] / testing / resources / javascript / document_methods.in
1 {{header}}
2 {{object 1 0}} <<
3   /Type /Catalog
4   /Pages 2 0 R
5   /OpenAction 10 0 R
6 >>
7 endobj
8 {{object 2 0}} <<
9   /Type /Pages
10   /Count 4
11   /Kids [
12     3 0 R
13     4 0 R
14     5 0 R
15     6 0 R
16   ]
17 >>
18 endobj
19 % Page number 0.
20 {{object 3 0}} <<
21   /Type /Page
22   /Parent 2 0 R
23   /Resources <<
24     /Font <</F1 15 0 R>>
25   >>
26   /MediaBox [0 0 612 792]
27   /Contents 8 0 R
28 >>
29 % Page number 1.
30 {{object 4 0}} <<
31   /Type /Page
32   /Parent 2 0 R
33   /Resources <<
34     /Font <</F1 15 0 R>>
35   >>
36   /MediaBox [0 0 612 792]
37 >>
38 % Page number 2.
39 {{object 5 0}} <<
40   /Type /Page
41   /Parent 2 0 R
42   /Resources <<
43     /Font <</F1 15 0 R>>
44   >>
45   /MediaBox [0 0 612 792]
46 >>
47 % Page number 3.
48 {{object 6 0}} <<
49   /Type /Page
50   /Parent 2 0 R
51   /Resources <<
52     /Font <</F1 15 0 R>>
53   >>
54   /MediaBox [0 0 612 792]
55 >>
56 % Contents of the page.
57 {{object 8 0}} <<
58 >>
59 stream
60 BT
61 20 50 Td
62 /F1 12 Tf
63 (Hello, world!) Tj
64 0 50 Td
65 endstream
66 endobj
67 % Info
68 {{object 9 0}} <<
69   /Author (Joe Random Author)
70   /Creator (Joe Random Creator)
71 >>
72 endobj
73 % OpenAction action
74 {{object 10 0}} <<
75   /Type /Action
76   /S /JavaScript
77   /JS 11 0 R
78 >>
79 endobj
80 % JS program to exexute
81 {{object 11 0}} <<
82 >>
83 stream
84 function expect(str, expected) {
85   try {
86     var result = eval(str);
87     if (result == expected) {
88       app.alert('PASS: ' + str + ' = ' + result);
89     } else {
90       app.alert('FAIL: ' + str + ' = ' + result + ', expected = ' + expected);
91     }
92   } catch (e) {
93     app.alert('ERROR: ' + e.toString());
94   }
95 }
96
97 function expectError(str) {
98   try {
99     var result = eval(str);
100     app.alert('FAIL: ' + str + ' = ' + result + ', expected to throw error');
101   } catch (e) {
102     app.alert('PASS: ' + str + ' threw error ' + e.toString());
103   }
104 }
105
106 // "Unsupported" methods are present in the document object, but not
107 // implemented. They always return |undefined| regardless of arguments.
108 function testUnsupported(str) {
109   expect('typeof ' + str, 'function');
110   expect(str + '()', undefined);
111   expect(str + '(1, 2, "clams", [1, 2, 3])', undefined);
112 }
113
114 function testAddIcon() {
115    // Method is present.
116    expect('typeof this.addIcon', 'function');
117
118    // Method takes exactly two arguments.
119    expectError('this.addIcon()');
120    expectError('this.addIcon(1)');
121    expectError('this.addIcon(1, 2, 3)');
122
123    // Second argument must actually be an icon.
124    expectError('this.addIcon("myicon", 3)');
125
126    // TODO(tsepez): test success cases.
127 }
128
129 function testCalculateNow() {
130    // Method is present.
131    expect('typeof this.calculateNow', 'function');
132
133    // TODO(tsepez): test with no permissions.
134    // TODO(tsepez): test success cases.
135 }
136
137 function testGetField() {
138    // Method is present.
139    expect('typeof this.getField', 'function');
140
141    // Method needs at least one argument.
142    expectError('this.getField()');
143
144    // TODO(tsepez): test success cases.
145 }
146
147 function testGetIcon() {
148    // Method is present.
149    expect('typeof this.getIcon', 'function');
150
151    // Method needs exactly one argument.
152    expectError('this.getIcon()');
153    expectError('this.getIcon(1, 2)');
154
155   // TODO(tsepez): test success cases.
156 }
157
158 function testGetNthFieldName() {
159   // Method is present.
160   expect('typeof this.getNthFieldName', 'function');
161
162   // Method needs at least one argument.
163   expectError('this.getNthFieldName()');
164
165   // Argument can not be negative.
166   expectError('this.getNthFieldName(-1)');
167
168   // TODO(tsepez): test success cases.
169 }
170
171 function testGetPageNthWord() {
172   // Method is present.
173   expect('typeof this.getPageNthWord', 'function');
174
175   // Method accepts any number of parameters.
176   expect('this.getPageNthWord(0, 0, true, "clams", [1, 2])', 'Hello,');
177
178   // Arguments can't be negative or out of range.
179   expectError('this.getPageNthWord(-1, 0, true)');
180   expectError('this.getPageNthWord(6, 0, true)');
181
182   // TODO(tsepez): test with no permissions.
183   // TODO(tsepez): test success cases.
184 }
185
186 function testGetPageNthWordQuads() {
187    // Method is present.
188    expect('typeof this.getPageNthWordQuads', 'function');
189
190   // TODO(tsepez): test with no permissions.
191   // TODO(tsepez): test success cases.
192 }
193
194 function testGetPageNumWords() {
195    // Method is present.
196    expect('typeof this.getPageNumWords', 'function');
197
198   // Method accepts any number of parameters.
199   expect('this.getPageNumWords(0, "clams", [1, 2])', 2);
200
201   // Arguments can't be negative or out of range.
202   expectError('this.getPageNumWords(-1)');
203   expectError('this.getPageNumWords(6)');
204
205   // TODO(tsepez): test with no permissions.
206   // TODO(tsepez): test success cases.
207 }
208
209 function testGetPrintParams() {
210    // Method is present.
211    expect('typeof this.getPrintParams', 'function');
212
213   // TODO(tsepez): test success cases.
214 }
215
216 function testMailDoc() {
217    // Method is present.
218    expect('typeof this.mailDoc', 'function');
219
220   // TODO(tsepez): test with no permissions.
221   // TODO(tsepez): test success cases.
222 }
223
224 function testMailForm() {
225    // Method is present.
226    expect('typeof this.mailForm', 'function');
227
228   // TODO(tsepez): test with no permissions.
229   // TODO(tsepez): test success cases.
230 }
231
232 function testPrint() {
233    // Method is present.
234    expect('typeof this.print', 'function');
235
236   // TODO(tsepez): test success cases.
237 }
238
239 function testRemoveField() {
240   // Method is present.
241   expect('typeof this.removeField', 'function');
242
243   // Method requires at least one argument.
244   expectError('this.removeField()');
245
246   // TODO(tsepez): test with no permissions.
247   // TODO(tsepez): test success cases.
248 }
249
250 function testResetForm() {
251    // Method is present.
252    expect('typeof this.resetForm', 'function');
253
254   // TODO(tsepez): test with no permissions.
255   // TODO(tsepez): test success cases.
256 }
257
258 function testSubmitForm() {
259    // Method is present.
260    expect('typeof this.submitForm', 'function');
261
262   // Method requires at least one argument.
263   expectError('this.submitForm()');
264
265   // TODO(tsepez): test success cases.
266 }
267
268 try {
269   app.alert('*** Testing Unsupported Methods ***');
270   testUnsupported('this.addAnnot');
271   testUnsupported('this.addField');
272   testUnsupported('this.addLink');
273   testUnsupported('this.closeDoc');
274   testUnsupported('this.createDataObject');
275   testUnsupported('this.deletePages');
276   testUnsupported('this.exportAsFDF');
277   testUnsupported('this.exportAsText');
278   testUnsupported('this.exportAsXFDF');
279   testUnsupported('this.extractPages');
280   testUnsupported('this.getAnnot');
281   testUnsupported('this.getAnnot3D');
282   testUnsupported('this.getAnnots');
283   testUnsupported('this.getLinks');
284   testUnsupported('this.getOCGs');
285   testUnsupported('this.getPageBox');
286   testUnsupported('this.getURL');
287   testUnsupported('this.importAnFDF');
288   testUnsupported('this.importAnXFDF');
289   testUnsupported('this.importTextData');
290   testUnsupported('this.insertPages');
291   testUnsupported('this.removeIcon');
292   testUnsupported('this.replacePages');
293   testUnsupported('this.saveAs');
294
295   app.alert('*** Testing Supported Methods ***');
296   testAddIcon();
297   testCalculateNow();
298   testGetField();
299   testGetIcon();
300   testGetNthFieldName();
301   testGetPageNthWord();
302   testGetPageNthWordQuads();
303   testGetPageNumWords();
304   testGetPrintParams();
305   testMailDoc();
306   testMailForm();
307   testPrint();
308   testRemoveField();
309   testResetForm();
310   testSubmitForm();
311 } catch (e) {
312   app.alert('FATAL: ' + e.toString());
313 }
314 endstream
315 endobj
316 {{xref}}
317 trailer <<
318   /Root 1 0 R
319   /Info 9 0 R
320 >>
321 {{startxref}}
322 %%EOF