{{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] >> 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"); // testROProperty(field, "defaultValue", "clams"); testRIProperty(field, "doNotScroll", false, true); testRIProperty(field, "doNotSpellCheck", false, true); // testROProperty(field, "display", "clams"); testROProperty(field, "doc", "[object global]"); // testROProperty(field, "editable", "clams"); // testROProperty(field, "exportValues", "clams"); // testROProperty(field, "hidden", "clams"); testRIProperty(field, "fileSelect", false, true); testRIProperty(field, "fillColor", "T", ["RGB", 0, 0, 0]); // testROProperty(field, "lineWidth", "clams"); // testROProperty(field, "highlight", "clams"); testRIProperty(field, "multiline", false, true); // testROProperty(field, "multipleSelection", "clams"); testROProperty(field, "name", "MyField"); // testROProperty(field, "numItems", "clams"); testROProperty(field, "page", -1); testRIProperty(field, "password", false, 42); // testROProperty(field, "print", "clams"); // 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