{{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(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
