summaryrefslogtreecommitdiff
path: root/testing/resources/javascript/field_properties.in
diff options
context:
space:
mode:
Diffstat (limited to 'testing/resources/javascript/field_properties.in')
-rw-r--r--testing/resources/javascript/field_properties.in249
1 files changed, 249 insertions, 0 deletions
diff --git a/testing/resources/javascript/field_properties.in b/testing/resources/javascript/field_properties.in
new file mode 100644
index 0000000000..4b54cbc17b
--- /dev/null
+++ b/testing/resources/javascript/field_properties.in
@@ -0,0 +1,249 @@
+{{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