blob: 51bfa5e52669dcf316286f3a3f562e4f72152cea [file] [log] [blame]
{{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