{{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}} <<
  {{streamlen}}
>>
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}}
        testRIProperty(xfa.dataWindow, "currentRecordNumber", undefined);
        testRIProperty(xfa.dataWindow, "isDefined", undefined);
        testRIProperty(xfa.dataWindow, "recordsAfter", undefined);
        testRIProperty(xfa.dataWindow, "recordsBefore", undefined);
        app.alert("finished testing properties");
        expect("xfa.dataWindow.gotoRecord()", undefined);
        expect("xfa.dataWindow.isRecordGroup()", undefined);
        expect("xfa.dataWindow.moveCurrentRecord()", undefined);
        expect("xfa.dataWindow.record()", undefined);
        app.alert("finished testing methods");
      </script>
    </event>
  </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
