| {{header}} |
| {{object 1 0}} << |
| /Type /Catalog |
| /Pages 2 0 R |
| /AcroForm 4 0 R |
| /OpenAction 10 0 R |
| >> |
| endobj |
| {{object 2 0}} << |
| /Type /Pages |
| /Count 1 |
| /Kids [ |
| 3 0 R |
| ] |
| >> |
| endobj |
| % Page number 0. |
| {{object 3 0}} << |
| /Type /Page |
| /Parent 2 0 R |
| /MediaBox [0 0 612 792] |
| /Annots [ |
| 5 0 R |
| 6 0 R |
| 7 0 R |
| 8 0 R |
| 9 0 R |
| ] |
| >> |
| endobj |
| % Forms |
| {{object 4 0}} << |
| /Fields [5 0 R] |
| >> |
| endobj |
| % Fields |
| {{object 5 0}} << |
| /T (MyField) |
| /Type /Annot |
| /Subtype /Widget |
| /Rect [100 100 400 400] |
| /Kids [ |
| 6 0 R |
| 7 0 R |
| 8 0 R |
| 9 0 R |
| ] |
| >> |
| endobj |
| {{object 6 0}} << |
| /FT /Tx |
| /Parent 5 0 R |
| /T (Sub_X) |
| /Type /Annot |
| /Subtype /Widget |
| /Rect [200 200 220 220] |
| >> |
| endobj |
| {{object 7 0}} << |
| /FT /Tx |
| /Parent 5 0 R |
| /T (Sub_A) |
| /Type /Annot |
| /Subtype /Widget |
| /Rect [220 220 240 240] |
| >> |
| endobj |
| {{object 8 0}} << |
| /FT /Tx |
| /Parent 5 0 R |
| /T (Sub_Z) |
| /Type /Annot |
| /Subtype /Widget |
| /Rect [240 240 260 260] |
| >> |
| endobj |
| {{object 9 0}} << |
| /FT /Tx |
| /Parent 5 0 R |
| /T (Sub_B) |
| /Type /Annot |
| /Subtype /Widget |
| /Rect [260 260 280 280] |
| >> |
| endobj |
| % OpenAction action |
| {{object 10 0}} << |
| /Type /Action |
| /S /JavaScript |
| /JS 11 0 R |
| >> |
| endobj |
| % JS program to exexute |
| {{object 11 0}} << |
| {{streamlen}} |
| >> |
| stream |
| function testReadProperty(field, prop, expected) { |
| try { |
| var actual = field[prop]; |
| if (actual == expected) { |
| app.alert('PASS: ' + prop + ' = ' + actual); |
| } else { |
| app.alert('FAIL: ' + prop + ' = ' + actual + ', expected = ' + expected); |
| } |
| } catch (e) { |
| app.alert('ERROR: ' + e.toString()); |
| } |
| } |
| |
| function testUnreadableProperty(field, prop) { |
| try { |
| var value = field[prop]; |
| app.alert('FAIL: ' + prop + ', expected to throw error'); |
| } catch (e) { |
| app.alert('PASS: ' + prop + ' threw error ' + e.toString()); |
| } |
| } |
| |
| function testWriteProperty(field, prop, newValue) { |
| try { |
| field[prop] = newValue; |
| var actual = field[prop]; |
| if (actual == newValue) { |
| app.alert('PASS: ' + prop + ' = ' + actual); |
| } else { |
| app.alert('FAIL: ' + prop + ' = ' + actual + ', expected = ' + newValue); |
| } |
| } catch (e) { |
| app.alert('ERROR: ' + e.toString()); |
| } |
| } |
| |
| function testWriteIgnoredProperty(field, prop, expected, newValue) { |
| try { |
| field[prop] = newValue; |
| var actual = field[prop]; |
| if (actual == expected) { |
| app.alert('PASS: ' + prop + ' = ' + actual); |
| } else { |
| app.alert('FAIL: ' + prop + ' = ' + actual + ', expected = ' + expected); |
| } |
| } catch (e) { |
| app.alert('ERROR: ' + e.toString()); |
| } |
| } |
| |
| function testUnwritableProperty(field, prop, newValue) { |
| try { |
| field[prop] = newValue; |
| app.alert('FAIL: ' + prop + ' = ' + newValue + ', expected to throw error'); |
| } catch (e) { |
| app.alert('PASS: ' + prop + ' threw error ' + e.toString()); |
| } |
| } |
| |
| function testRWProperty(field, prop, expected, newValue) { |
| testReadProperty(field, prop, expected); |
| testWriteProperty(field, prop, newValue); |
| } |
| |
| function testRIProperty(field, prop, expected, newValue) { |
| testReadProperty(field, prop, expected); |
| testWriteIgnoredProperty(field, prop, expected, newValue); |
| } |
| |
| function testROProperty(field, prop, expected) { |
| testReadProperty(field, prop, expected); |
| testUnwritableProperty(field, prop, 42); |
| } |
| |
| function testXXProperty(field, prop) { |
| testUnreadableProperty(field, prop); |
| testUnwritableProperty(field, prop, 42); |
| } |
| |
| function testProperties() { |
| try { |
| var field = this.getField("MyField"); |
| app.alert('Testing properties under delay'); |
| testRWProperty(field, "delay", false, true); |
| // TODO(tsepez): try this case, too. |
| // testPropertiesCase(field); |
| app.alert('Testing properties under non-delay'); |
| testRWProperty(field, "delay", true, false); |
| testPropertiesCase(field); |
| } catch (e) { |
| app.alert("Unexpected error: " + e); |
| } |
| } |
| |
| function testPropertiesCase(field) { |
| try { |
| // TODO(tsepez): devise tests and uncomment. |
| testRIProperty(field, "alignment", "left", "center"); |
| testRWProperty(field, "borderStyle", "solid", "inset"); |
| // testROProperty(field, "buttonAlignX", "clams"); |
| // testROProperty(field, "buttonAlignY", "clams"); |
| // testROProperty(field, "buttonFitBounds", "clams"); |
| // testROProperty(field, "buttonPosition", "clams"); |
| // testROProperty(field, "buttonScaleHow", "clams"); |
| // testROProperty(field, "buttonScaleWhen", "clams"); |
| testRIProperty(field, "calcOrderIndex", -1, 100); |
| testRIProperty(field, "charLimit", 0, 100); |
| testRIProperty(field, "comb", false, true); |
| // testRIProperty(field, "commitOnSelChange", false, true); |
| // testROProperty(field, "currentValueIndices", "clams"); |
| testXXProperty(field, "defaultStyle"); |
| testRIProperty(field, "defaultValue", "", "clams"); |
| testRIProperty(field, "doNotScroll", false, true); |
| testRIProperty(field, "doNotSpellCheck", false, true); |
| testRWProperty(field, "display", 2, 3); |
| testROProperty(field, "doc", "[object global]"); |
| // testROProperty(field, "editable", "clams"); |
| // testROProperty(field, "exportValues", "clams"); |
| testRWProperty(field, "hidden", false, true); |
| testRIProperty(field, "fileSelect", false, true); |
| testRIProperty(field, "fillColor", "T", ["RGB", 0, 0, 0]); |
| testRWProperty(field, "lineWidth", 1, 4); |
| // testROProperty(field, "highlight", "clams"); |
| testRIProperty(field, "multiline", false, true); |
| // testROProperty(field, "multipleSelection", "clams"); |
| testROProperty(field, "name", "MyField"); |
| // testROProperty(field, "numItems", "clams"); |
| testROProperty(field, "page", 0); |
| testRIProperty(field, "password", false, 42); |
| testRWProperty(field, "print", true, false); |
| // testROProperty(field, "radiosInUnison", "clams"); |
| testRIProperty(field, "readonly", false, true); |
| // testRWProperty(field, "rect", [0,0,0,0], [0,0,0,0]); |
| // testROProperty(field, "required", "clams"); |
| testRIProperty(field, "richText", false, true); |
| testRIProperty(field, "richValue", undefined, "clams"); |
| testRIProperty(field, "rotation", 0, 42); |
| testRIProperty(field, "source", undefined, "clams"); |
| testRIProperty(field, "strokeColor", "T", ["RGB", 0, 0, 0]); |
| // testROProperty(field, "style", "clams"); |
| testRIProperty(field, "submitName", undefined, "clams"); |
| testRIProperty(field, "textColor", "T", ["RGB", 0, 0, 0]); |
| // testROProperty(field, "textFont", "clams"); |
| testRIProperty(field, "textSize", 0, 32); |
| testROProperty(field, "type", "text"); |
| testRIProperty(field, "userName", ""); |
| testRIProperty(field, "value", "", "clams"); |
| testROProperty(field, "valueAsString", ""); |
| } catch (e) { |
| app.alert("Unexpected error: " + e); |
| } |
| } |
| testProperties(); |
| endstream |
| endobj |
| {{xref}} |
| {{trailer}} |
| {{startxref}} |
| %%EOF |