{{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 (
    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(undefined, "AFDate_Format()");
      expectError(undefined, "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(undefined, "AFDate_FormatEx()");
      expectError(undefined, "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(undefined, "AFDate_Keystroke()");
      expectError(undefined, "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(undefined, "AFDate_KeystrokeEx()");
      expectError(undefined, "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(undefined, "AFExtractNums()");
      expectError(undefined, "AFExtractNums(1, 2)");
      expect(undefined, "AFExtractNums('100 200')", "100,200");

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

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

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

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

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

      expectError(undefined, "AFNumber_Format()");
      expectError(undefined, "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(undefined, "AFNumber_Keystroke()");
      expectError(undefined, "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(undefined, "AFParseDateEx()");
      expectError(undefined, "AFParseDateEx(1, 2, 3)");
      expect(undefined, "AFParseDateEx(1, 2)", "1399672130000");

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

      expectError(undefined, "AFPercent_Format()");
      expectError(undefined, "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(undefined, "AFPercent_Keystroke()");
      expectError(undefined, "AFPercent_Keystroke(1)");
      expectError("abc", "AFPercent_Keystroke(1, 0)");
      expectEventValue(".123", "AFPercent_Keystroke(1, 0)", ".123");

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

      expectError(undefined, "AFRange_Validate()", undefined);
      expectError(undefined, "AFRange_Validate(1, 2, 3, 4, 5)", undefined);
      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(undefined, "AFSimple()", 2);
      expectError(undefined, "AFSimple(1, 2, 3, 4)");
      expect(undefined, "AFSimple(1, 2, 3)", 2);

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

      expectError(undefined, "AFSimple_Calculate()");
      expectError(undefined, "AFSimple_Calculate(1)");
      expectEventValue(undefined, "AFSimple_Calculate('blooey', [1, 3, 14])", 0);
      expectEventValue(undefined, "AFSimple_Calculate('AVG', [1, 3, 14])", 0);
      expectEventValue(undefined, "AFSimple_Calculate('SUM', [1, 3, 14])", 0);

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

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

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

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

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

      expectError(undefined, "AFSpecial_KeystrokeEx()", undefined);
      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(undefined, "AFTime_Format()");
      expectError(undefined, "AFTime_Format(1, 2)");
      expectEventValue(undefined, "AFTime_Format(1)", "9:48 pm");

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

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

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

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

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

      expectError(undefined, "AFTime_KeystrokeEx()");
      expectError(undefined, "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
>>
endobj
{{xref}}
{{trailer}}
{{startxref}}
%%EOF
