Merge to XFA: Remove unused nParamNum values from JS method tables.
[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 testDeletePages() {
138    // Method is present.
139    expect('typeof this.deletePages', 'function');
140
141    // TODO(tsepez): test with no permissions.
142    // TODO(tsepez): test success cases.
143 }
144
145 function testGetField() {
146    // Method is present.
147    expect('typeof this.getField', 'function');
148
149    // Method needs at least one argument.
150    expectError('this.getField()');
151
152    // TODO(tsepez): test success cases.
153 }
154
155 function testGetIcon() {
156    // Method is present.
157    expect('typeof this.getIcon', 'function');
158
159    // Method needs exactly one argument.
160    expectError('this.getIcon()');
161    expectError('this.getIcon(1, 2)');
162
163   // TODO(tsepez): test success cases.
164 }
165
166 function testGetNthFieldName() {
167   // Method is present.
168   expect('typeof this.getNthFieldName', 'function');
169
170   // Method needs at least one argument.
171   expectError('this.getNthFieldName()');
172
173   // Argument can not be negative.
174   expectError('this.getNthFieldName(-1)');
175
176   // TODO(tsepez): test success cases.
177 }
178
179 function testGetPageNthWord() {
180   // Method is present.
181   expect('typeof this.getPageNthWord', 'function');
182
183   // Method accepts any number of parameters.
184   expect('this.getPageNthWord(0, 0, true, "clams", [1, 2])', 'Hello,');
185
186   // Arguments can't be negative or out of range.
187   expectError('this.getPageNthWord(-1, 0, true)');
188   expectError('this.getPageNthWord(6, 0, true)');
189
190   // TODO(tsepez): test with no permissions.
191   // TODO(tsepez): test success cases.
192 }
193
194 function testGetPageNthWordQuads() {
195    // Method is present.
196    expect('typeof this.getPageNthWordQuads', 'function');
197
198   // TODO(tsepez): test with no permissions.
199   // TODO(tsepez): test success cases.
200 }
201
202 function testGetPageNumWords() {
203    // Method is present.
204    expect('typeof this.getPageNumWords', 'function');
205
206   // Method accepts any number of parameters.
207   expect('this.getPageNumWords(0, "clams", [1, 2])', 2);
208
209   // Arguments can't be negative or out of range.
210   expectError('this.getPageNumWords(-1)');
211   expectError('this.getPageNumWords(6)');
212
213   // TODO(tsepez): test with no permissions.
214   // TODO(tsepez): test success cases.
215 }
216
217 function testGetPrintParams() {
218    // Method is present.
219    expect('typeof this.getPrintParams', 'function');
220
221   // TODO(tsepez): test success cases.
222 }
223
224 function testMailDoc() {
225    // Method is present.
226    expect('typeof this.mailDoc', 'function');
227
228   // TODO(tsepez): test with no permissions.
229   // TODO(tsepez): test success cases.
230 }
231
232 function testMailForm() {
233    // Method is present.
234    expect('typeof this.mailForm', 'function');
235
236   // TODO(tsepez): test with no permissions.
237   // TODO(tsepez): test success cases.
238 }
239
240 function testPrint() {
241    // Method is present.
242    expect('typeof this.print', 'function');
243
244   // TODO(tsepez): test success cases.
245 }
246
247 function testRemoveField() {
248   // Method is present.
249   expect('typeof this.removeField', 'function');
250
251   // Method requires at least one argument.
252   expectError('this.removeField()');
253
254   // TODO(tsepez): test with no permissions.
255   // TODO(tsepez): test success cases.
256 }
257
258 function testRemoveIcon() {
259    // Method is present.
260    expect('typeof this.removeIcon', 'function');
261
262   // Method requires at least one argument.
263   expectError('this.removeIcon()');
264
265   // TODO(tsepez): test success cases.
266 }
267
268 function testResetForm() {
269    // Method is present.
270    expect('typeof this.resetForm', 'function');
271
272   // TODO(tsepez): test with no permissions.
273   // TODO(tsepez): test success cases.
274 }
275
276 function testSubmitForm() {
277    // Method is present.
278    expect('typeof this.submitForm', 'function');
279
280   // Method requires at least one argument.
281   expectError('this.submitForm()');
282
283   // TODO(tsepez): test success cases.
284 }
285
286 try {
287   app.alert('*** Testing Unsupported Methods ***');
288   testUnsupported('this.addAnnot');
289   testUnsupported('this.addField');
290   testUnsupported('this.addLink');
291   testUnsupported('this.closeDoc');
292   testUnsupported('this.createDataObject');
293   testUnsupported('this.exportAsFDF');
294   testUnsupported('this.exportAsText');
295   testUnsupported('this.exportAsXFDF');
296   testUnsupported('this.extractPages');
297   testUnsupported('this.getAnnot');
298   testUnsupported('this.getAnnot3D');
299   testUnsupported('this.getAnnots');
300   testUnsupported('this.getLinks');
301   testUnsupported('this.getOCGs');
302   testUnsupported('this.getPageBox');
303   testUnsupported('this.getURL');
304   testUnsupported('this.importAnFDF');
305   testUnsupported('this.importAnXFDF');
306   testUnsupported('this.importTextData');
307   testUnsupported('this.insertPages');
308   testUnsupported('this.replacePages');
309   testUnsupported('this.saveAs');
310
311   app.alert('*** Testing Supported Methods ***');
312   testAddIcon();
313   testCalculateNow();
314   testDeletePages();
315   testGetField();
316   testGetIcon();
317   testGetNthFieldName();
318   testGetPageNthWord();
319   testGetPageNthWordQuads();
320   testGetPageNumWords();
321   testGetPrintParams();
322   testMailDoc();
323   testMailForm();
324   testPrint();
325   testRemoveField();
326   testRemoveIcon();
327   testResetForm();
328   testSubmitForm();
329 } catch (e) {
330   app.alert('FATAL: ' + e.toString());
331 }
332 endstream
333 endobj
334 {{xref}}
335 trailer <<
336   /Root 1 0 R
337   /Info 9 0 R
338 >>
339 {{startxref}}
340 %%EOF