{{header}}
{{include ../../xfa_catalog_1_0.fragment}}
{{include ../../xfa_object_2_0.fragment}}
{{include ../../xfa_preamble_3_0.fragment}}
{{include ../../xfa_config_4_0.fragment}}
{{object 5 0}} <<
>>
stream
<template>
  <subform layout="tb" name="my_doc">
    <pageSet id="page" relation="orderedOccurrence">
      <occur initial="1" max="1" min="1"/>
      <pageArea id="Page1" name="Page1">
        <occur max="1" min="1"/>
        <contentArea h="100mm" w="200mm" x="0.25in" y="0.25in"/>
      </pageArea>
      <pageArea id="Page2" name="Page2">
        <occur max="1" min="1"/>
        <contentArea h="100mm" w="200mm" x="0.25in" y="0.25in"/>
      </pageArea>
    </pageSet>
    <event activity="docReady" ref="$host">
      <script contentType="application/x-javascript">
        {{include ../expect.js}}
        {{include ../property_test_helpers.js}}
        testROProperty(xfa.host, "appType", "Exchange");
        testRWProperty(xfa.host, "calculationsEnabled", true, false);
        testRIProperty(xfa.host, "currentPage", -1, 0);
        testROProperty(xfa.host, "language", "");
        testROProperty(xfa.host, "name", "Acrobat");
        testROProperty(xfa.host, "numPages", 2);
        testROProperty(xfa.host, "platform", "");
        testRIProperty(xfa.host, "title", "");
        testRWProperty(xfa.host, "validationsEnabled", true, false);
        testROProperty(xfa.host, "variation", "Full");
        testROProperty(xfa.host, "version", "11");
        app.alert("finished testing properties");

        expectError("xfa.host.beep(1, 1)");
        expect("xfa.host.beep(42)");
        expect("xfa.host.beep()");

        expect("xfa.host.documentCountInBatch()", 0);
        expect("xfa.host.documentCountInBatch(42, 'args', ['ignored'])", 0);

        expect("xfa.host.documentInBatch()", 0);
        expect("xfa.host.documentInBatch(42, 'args', ['ignored'])", 0);

        expectError("xfa.host.exportData()");
        expectError("xfa.host.exportData(1, 2, 3)");
        expect("xfa.host.exportData('to-evil-place')");
        expect("xfa.host.exportData('to-evil-place', false)");

        expect("xfa.host.getFocus()");
        expect("xfa.host.getFocus('args', 'ignored')");

        expectError("xfa.host.gotoURL()");
        expectError("xfa.host.gotoURL(1, 2)");
        expect("xfa.host.gotoURL('http://example.com')");

        expectError("xfa.host.importData()");
        expectError("xfa.host.importData(1, 2)");
        expect("xfa.host.importData('from-good-place')");

        expectError("xfa.host.openList()");
        expectError("xfa.host.openList(1, 2)");
        expect("xfa.host.openList('my_doc.subform_combox_0.combox')");
        expect("xfa.host.openList(eval('my_doc.subform_combox_0'))");

        expectError("xfa.host.print(1, 2, 3, 4, 5, 6, 7)");
        expectError("xfa.host.print(1, 2, 3, 4, 5, 6, 7, 8, 9)");
        expect("xfa.host.print(true, 1, 1, true, true, true, true, true)");

        expectError("xfa.host.response()");
        expectError("xfa.host.response(1, 2, 3, 4, 5)");
        expect("xfa.host.response('Are you sure?', 'Launch Missiles', 'Yes', 1)", "No");

        expectError("xfa.host.setFocus()");
        expectError("xfa.host.setFocus('one', 'two')");
        expect("xfa.host.setFocus('my_doc.subform_combox_0')");
        expect("xfa.host.getFocus()", "[object XFAObject]");
        expect("xfa.host.setFocus(eval('my_doc.subform_combox_0'))");
        expect("xfa.host.getFocus()", "[object XFAObject]");

        app.alert("finished testing methods");
      </script>
    </event>
    <subform layout="tb" name="subform_combox_0">
      <occur initial="1" max="10" min="0" name="occur_subform_combox_0">
      </occur>
      <field h="10mm" name="combox" w="40mm" x="10mm" y="10mm">
      </field>
    </subform>
  </subform>
</template>
endstream
endobj
{{include ../../xfa_locale_6_0.fragment}}
{{include ../../xfa_postamble_7_0.fragment}}
{{include ../../xfa_pages_8_0.fragment}}
{{xref}}
{{trailer}}
{{startxref}}
%%EOF
