{{header}}
{{object 1 0}} <<
  /Type /Catalog
  /Pages 2 0 R
  /AcroForm << /Fields [ 4 0 R 10 0 R ] /DR 5 0 R >>
>>
endobj
{{object 2 0}} <<
  /Count 1
  /Kids [ 3 0 R ]
  /Type /Pages
>>
endobj
{{object 3 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources 5 0 R
  /MediaBox [ 0 0 300 200 ]
  /Contents 8 0 R
  /Annots [ 4 0 R 10 0 R ]
>>
endobj
{{object 4 0}} <<
  /Type /Annot
  /FT /Tx
  /T (Text Box)
  /DA (0 0 0 rg /F1 12 Tf)
  /Rect [ 100 100 200 130 ]
  /Subtype /Widget
  /AA <<
    /F 9 0 R
  >>
>>
endobj
{{object 5 0}} <<
  /Font 6 0 R
>>
endobj
{{object 6 0}} <<
  /F1 7 0 R
>>
endobj
{{object 7 0}} <<
  /Type /Font
  /Subtype /Type1
  /BaseFont /Helvetica
>>
endobj
{{object 8 0}} <<
  {{streamlen}}
>>
stream
endstream
endobj
{{object 9 0}} <<
  /JS (
    {{include expect.js}}

    try {
      app.alert("*** starting test ***");

      expect("event.change", "");
      expect("event.change = 'boo'", "boo");
      expect("event.change", "boo");

      expect("event.changeEx", "");
      expectError("event.changeEx = 'boo'");

      expect("event.commitKey", "");
      expectError("event.commitKey = 'boo'");

      // FieldFull applies to events named Keystroke only.
      // TODO(tsepez): figure out a way to set event names for tests.
      expectError("event.fieldFull");
      expectError("event.fieldFull = 'boo'");

      expect("event.keyDown", "");
      expectError("event.keyDown = 'boo'");

      expect("event.modifier", "");
      expectError("event.modifier = 'boo'");

      expect("event.name", "Format");
      expectError("event.name = 'boo'");

      expect("event.rc", false);
      expect("event.rc = 'boo'", "boo");
      expect("event.rc", true);
      expect("event.rc = false", false);

      // TODO(tsepez): is silently ignoring update correct here?
      expect("event.richChange", undefined);
      expect("event.richChange = 'boo'", "boo");
      expect("event.richChange", undefined);

      // TODO(tsepez): is silently ignoring update correct here?
      expect("event.richChangeEx", undefined);
      expect("event.richChangeEx = 'boo'", "boo");
      expect("event.richChangeEx", undefined);

      // TODO(tsepez): is silently ignoring update correct here?
      expect("event.richValue", undefined);
      expect("event.richValue = 'boo'", "boo");
      expect("event.richValue", undefined);

      // selEnd applies to events named Keystroke only.
      // TODO(tsepez): figure out a way to set event names for tests.
      expect("event.selEnd", undefined);
      expect("event.selEnd = 'boo'", "boo");
      expect("event.selEnd", undefined);

      // selEnd applies to events named Keystroke only.
      // TODO(tsepez): figure out a way to set event names for tests.
      expect("event.selStart", undefined);
      expect("event.selStart = 'boo'", "boo");
      expect("event.selStart", undefined);

      expect("event.shift", false);
      expectError("event.shift = 'boo'");

      // TODO(tsepez): dig deeper into object.
      expect("event.source", "[object Object]");
      expectError("event.source = 'boo'");

      // TODO(tsepez): dig deeper into object.
      expect("event.target", "[object Object]");
      expectError("event.target = 'boo'");

      expect("event.targetName", "Text Box");
      expectError("event.targetName = 'boo'");

      expect("event.type", "Field");
      expectError("event.type = 'boo'");

      expect("event.value", "");
      expect("event.value = 'boo'", "boo");
      expect("event.value", "boo");
      expect("event.value = ''", "");
      expect("event.value", "");
      expect("event.value = 0", 0);
      expect("event.value", 0);
      expect("event.value = 2", 2);
      expect("event.value", 2);
      expectError("event.value = true");
      expectError("event.value = false");
      expectError("event.value = undefined");
      expectError("event.value = null");

      expect("event.willCommit", true);
      expectError("event.willCommit = 'boo'");
      expect("event.willCommit", true);

      app.alert("*** ending test ***");
    } catch (e) {
      app.alert("Truly unexpected error occured: " + e);
    }
  )
  /S /JavaScript
>>
endobj
{{object 10 0}} <<
  /Type /Annot
  /FT /Tx
  /T (Text2)
  /DA (0 0 0 rg /F1 12 Tf)
  /Rect [ 100 40 200 70 ]
  /Subtype /Widget
>>
endobj
{{xref}}
{{trailer}}
{{startxref}}
%%EOF
