{{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"><![CDATA[
        {{include ../expect.js}}
        {{include ../property_test_helpers.js}}
        {{include dump_tree.js}}

        dumpTree(xfa);

        testROProperty(my_doc, "isContainer", true);
        testROProperty(my_doc, "isNull", false);
        testROProperty(my_doc, "model", "[object XFAObject]");
        testROProperty(my_doc, "ns", "");
        testROProperty(my_doc, "oneOfChild", false);
        expect("typeof my_doc.applyXSL", "function");
        expect("typeof my_doc.assignNode", "function");
        expect("typeof my_doc.clone", "function");
        expect("typeof my_doc.getAttribute", "function");
        expect("typeof my_doc.getElement", "function");
        expect("typeof my_doc.isPropertySpecified", "function");
        expect("typeof my_doc.loadXML", "function");
        expect("typeof my_doc.saveFilteredXML", "function");
        expect("typeof my_doc.saveXML", "function");
        expect("typeof my_doc.setAttribute", "function");
        expect("typeof my_doc.setElement", "function");
        expectError("my_doc.applyXSL()");
        expect("my_doc.applyXSL(42)", undefined);
        expectError("my_doc.assignNode()");
        expect("my_doc.assignNode(42)", undefined);
        expectError("my_doc.clone()");
        expect("my_doc.clone(true)", "[object XFAObject]");
        expect("my_doc.clone(false)", "[object XFAObject]");
        expectError("my_doc.getAttribute()");
        expect("my_doc.getAttribute('bogus')", "");
        expect("my_doc.getAttribute('layout')", "tb");
        expectError("my_doc.getElement()");
        expect("my_doc.getElement('bogus')", undefined);
        expect("my_doc.getElement('pageSet')", "[object XFAObject]");
        expectError("my_doc.isPropertySpecified()");
        expect("my_doc.isPropertySpecified('bogus')", false);
        expect("my_doc.isPropertySpecified('pageSet')", true);
        expectError("my_doc.loadXML()");
        expect("my_doc.loadXML('bogus')", undefined);
        expect("my_doc.loadXML('\u003cpageSet\u003e\u003d/pageSet\u003e')", undefined);
        expect("my_doc.saveFilteredXML('undefined', 'regardless', 'of', 'args')", undefined);
        expect("my_doc.saveXML().length > 9000", true);          // Really long string.
        expect("my_doc.saveXML('pretty').length > 9000", true);  // Really long string.
        expectError("my_doc.saveXML('bogus')");
        expectError("my_doc.setAttribute()");
        expectError("my_doc.setElement()");
        expect("my_doc.setElement('ns', 'something')", undefined);

        // Test setting attributes in the XFA schema.
        expect("my_doc.setAttribute('something', 'ns')", undefined);
        expect("my_doc.getAttribute('ns')", 'something');

        // Test free-form attributes outside of the XFA schema.
        expect("my_doc.setAttribute('fake_value', 'fake_attr')", undefined);
        expect("my_doc.getAttribute('fake_attr')", 'fake_value');
      ]]></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
