{{header}}
{{object 1 0}} <<
  /Type /Catalog
  /Pages 2 0 R
  /AcroForm <<
    /Fields [
      4 0 R
      10 0 R
      11 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
    11 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 (
    function expect(initial, expression, expected) {
      try {
        event.value = initial;
        var actual = eval(expression);
        if (actual == expected) {
          app.alert('PASS: ' + expression + ' = ' + actual);
        } else {
          app.alert('FAIL: ' + expression + ' = ' + actual + ', expected ' + expected + " ");
        }
      } catch (e) {
        app.alert('ERROR: ' + e);
      }
    }

    function expectEventValue(initial, expression, expected) {
      try {
        event.value = initial;
        eval(expression);
        var actual = event.value;
        if (actual == expected) {
          app.alert('PASS: ' + expression + ' = ' + actual);
        } else {
          app.alert('FAIL: ' + expression + ' = ' + actual + ', expected ' + expected + " ");
        }
      } catch (e) {
        app.alert('ERROR: ' + e);
      }
    }

    function expectError(initial, expression) {
      try {
        event.value = initial;
        var actual = eval(expression);
        app.alert('FAIL: ' + expression + ' = ' + actual + ', expected to throw');
      } catch (e) {
        app.alert('PASS: ' + expression + ' threw ' + e);
      }
    }

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

      expectError('', "AFDate_Format()");
      expectError('', "AFDate_Format(1, 2)");
      expectEventValue("GMT", "AFDate_Format(1)", "1/1/70");
      expectEventValue("PDT", "AFDate_Format(1)", "5/9/14");
      expectEventValue("GMT", "AFDate_Format('blooey')", "1/1");
      expectEventValue("PDT", "AFDate_Format('blooey')", "5/9");

      app.alert("**********************");

      expectError('', "AFDate_FormatEx()");
      expectError('', "AFDate_FormatEx(1, 2)");
      expectEventValue("x", "AFDate_FormatEx(2)", "2");
      expectEventValue("x", "AFDate_FormatEx('blooey')", "blooey");
      expectEventValue("x", "AFDate_FormatEx('m/d')", "5/9");

      app.alert("**********************");

      expectError('', "AFDate_Keystroke()");
      expectError('', "AFDate_Keystroke(1, 2)");
      expectEventValue("04/19", "AFDate_Keystroke(2)", "04/19");
      expectEventValue("04/19/15", "AFDate_Keystroke('blooey')", "04/19/15");

      app.alert("**********************");

      expectError('', "AFDate_KeystrokeEx()");
      expectError('', "AFDate_KeystrokeEx(1, 2)");
      expectEventValue("x", "AFDate_KeystrokeEx(2)", "x");
      expectEventValue("x", "AFDate_KeystrokeEx('blooey')", "x");
      expectEventValue("x", "AFDate_KeystrokeEx('m/d')", "x");

      app.alert("**********************");

      expectError('', "AFExtractNums()");
      expectError('', "AFExtractNums(1, 2)");
      expect('', "AFExtractNums('100 200')", "100,200");

      app.alert("**********************");

      expectError('', "AFMakeNumber()");
      expectError('', "AFMakeNumber(1, 2)");
      expect('', "AFMakeNumber('2blooey')", 0);
      expect('', "AFMakeNumber(1)", 1);
      expect('', "AFMakeNumber('1.2')", 1.2);
      expect('', "AFMakeNumber('1,2')", 1.2);

      app.alert("**********************");

      expectError('', "AFMergeChange()");
      expectError('', "AFMergeChange(1, 2)");
      expect("one", "AFMergeChange(undefined)", "one");

      app.alert("**********************");

      expectError('', "AFNumber_Format()");
      expectError('', "AFNumber_Format(0, 1, 0, 0, '', false, 42)");
      expectEventValue("blooey", "AFNumber_Format(0, 1, 0, 0, '', false)", 0);
      expectEventValue(12, "AFNumber_Format(0, 1, 0, 0, '', false)", 12);

      app.alert("**********************");

      expectError('', "AFNumber_Keystroke()");
      expectError('', "AFNumber_Keystroke(1)");
      expectError("abc", "AFNumber_Keystroke(1, 2)");
      expectEventValue("123", "AFNumber_Keystroke(1, 2)", "123");
      expectEventValue("123", "AFNumber_Keystroke(1, 2, 3)", "123");

      app.alert("**********************");

      expectError('', "AFParseDateEx()");
      expectError('', "AFParseDateEx(1, 2, 3)");
      expect('', "AFParseDateEx(1, 2)", "1399672130000");

      app.alert("**********************");

      expectError('', "AFPercent_Format()");
      expectError('', "AFPercent_Format(1, 2, 3)");
      expectEventValue(12.3456, "AFPercent_Format(1, 0)", "1,234.6%");
      expectEventValue(12.3456, "AFPercent_Format(4, 1)", "1234.5600%");

      app.alert("**********************");

      expectError('', "AFPercent_Keystroke()");
      expectError('', "AFPercent_Keystroke(1)");
      expectError("abc", "AFPercent_Keystroke(1, 0)");
      expectEventValue(".123", "AFPercent_Keystroke(1, 0)", ".123");

      app.alert("**********************");

      expectError('', "AFRange_Validate()", '');
      expectError('', "AFRange_Validate(1, 2, 3, 4, 5)", '');
      expectEventValue("1", "AFRange_Validate(true, 2, true, 4)", "1");  // Notifies "between".
      expectEventValue("5", "AFRange_Validate(true, 2, true, 4)", "5");  // Notifies "between".
      expectEventValue("1", "AFRange_Validate(true, 2, false, 4)", "1");  // Notifies "greater".
      expectEventValue("5", "AFRange_Validate(false, 2, true, 4)", "5");  // Notifies "less".
      expectEventValue("3", "AFRange_Validate(true, 2, true, 4)", "3");   // No notification.
      expectEventValue("1", "AFRange_Validate(false, 2, true, 4)", "1");  // No notification.
      expectEventValue("5", "AFRange_Validate(true, 2, false, 4)", "5");  // No notification.

      app.alert("**********************");

      expectError('', "AFSimple()", 2);
      expectError('', "AFSimple(1, 2, 3, 4)");
      expectError('', "AFSimple(1, 2, 3)");
      expectError('', "AFSimple('nonesuch', 2, 3)");
      expect('', "AFSimple('AVG', 2, 3)", 2.5);
      expect('', "AFSimple('MIN', 2, 3)", 2);
      expect('', "AFSimple('MAX', 2, 3)", 3);
      expect('', "AFSimple('SUM', 2, 3)", 5);
      expect('', "AFSimple('PRD', 2, 3)", 6);
      expectError('', "AFSimple('AVG', 2, 'nonesuch')");
      expectError('', "AFSimple('MIN', 2, 'nonesuch')");
      expectError('', "AFSimple('MAX', 2, 'nonesuch')");
      expectError('', "AFSimple('SUM', 2, 'nonesuch')");
      expectError('', "AFSimple('PRD', 2, 'nonesuch')");

      app.alert("**********************");

      expectError('', "AFSimple_Calculate()");
      expectError('', "AFSimple_Calculate(1)");
      expectEventValue('', "AFSimple_Calculate('blooey', ['Text2', 'Text3'])", 0);
      expectEventValue('', "AFSimple_Calculate('AVG', [1, 'nonesuch', {'crud': 32}])", 0);
      expectEventValue('', "AFSimple_Calculate('AVG', ['Text2', 'Text3'])", (123 + 456) / 2);
      expectEventValue('', "AFSimple_Calculate('SUM', ['Text2', 'Text3'])", 123 + 456);
      expectEventValue('', "AFSimple_Calculate('PRD', ['Text2', 'Text3'])", 123 * 456);
      expectEventValue('', "AFSimple_Calculate('MIN', ['Text2', 'Text3'])", 123);
      expectEventValue('', "AFSimple_Calculate('MAX', ['Text2', 'Text3'])", 456);
      expectEventValue('', "AFSimple_Calculate('AVG', 'Text2, Text3')", (123 + 456) / 2);

      app.alert("**********************");

      expectError('', "AFSpecial_Format()", '');
      expectError('', "AFSpecial_Format(1, 2)", '');
      expectEventValue('', "AFSpecial_Format(3)", "--");

      app.alert("**********************");

      expectError('', "AFSpecial_Keystroke()");
      expectError('', "AFSpecial_Keystroke(65, 66)");
      expectEventValue("abc", "AFSpecial_Keystroke(65)", "abc");

      app.alert("**********************");

      expectError('', "AFSpecial_KeystrokeEx()", '');
      expectEventValue("12345", "AFSpecial_KeystrokeEx('')", "12345");      // No notification.
      expectEventValue("123", "AFSpecial_KeystrokeEx('9999')", "123");      // Notifies invalid.
      expectEventValue("12345", "AFSpecial_KeystrokeEx('9999')", "12345");  // Notifies too long.
      expectEventValue("abcd", "AFSpecial_KeystrokeEx('9999')", "abcd");    // Notifies invalid.
      expectEventValue("1234", "AFSpecial_KeystrokeEx('9999')", "1234");
      expectEventValue("abcd", "AFSpecial_KeystrokeEx('XXXX')", "abcd");

      app.alert("**********************");

      expectError('', "AFTime_Format()");
      expectError('', "AFTime_Format(1, 2)");
      expectEventValue(0, "AFTime_Format(1)", "9:48 pm");

      app.alert("**********************");

      expectError('', "AFTime_FormatEx()");
      expectError('', "AFTime_FormatEx('blooey', 42)");
      expectEventValue(0, "AFTime_FormatEx('blooey')", "blooey");

      app.alert("**********************");

      expectError('', "AFTime_Keystroke()", '');
      expectError('', "AFTime_Keystroke(1, 2)", '');
      expectEventValue("12:03", "AFTime_Keystroke(65)", "12:03");

      app.alert("**********************");

      expectError('', "AFTime_KeystrokeEx()");
      expectError('', "AFTime_KeystrokeEx(1, 2)");
      expectEventValue("12:04", "AFTime_KeystrokeEx('blooey')", "12:04");

      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
  /V (123)
>>
endobj
{{object 11 0}} <<
  /Type /Annot
  /FT /Tx
  /T (Text3)
  /DA (0 0 0 rg /F1 12 Tf)
  /Rect [100 0 200 30]
  /Subtype /Widget
  /V (456)
>>
endobj
{{xref}}
{{trailer}}
{{startxref}}
%%EOF
