{{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
<goop viscosity="sludge">Spurious Nonsense</goop>
<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');

        // Test "packet" nodes which are unrecognized tags at XDP level.
        expect("goop", undefined);
        var goop = this.resolveNode('#packet');
        expect("goop.className", "packet");
        expect("goop.viscosity", undefined);
        expectError("goop.getAttribute()");
        expectError("goop.getAttribute(1, 2)");
        expect("goop.getAttribute('nonesuch')", "");
        expect("goop.getAttribute('viscosity')", "sludge");
        expectError("goop.setAttribute()");
        expectError("goop.setAttribute(1)");
        expectError("goop.setAttribute(1, 2, 3)");

        // Remember, args to setAttribute() are backwards from what one might
        // typically expect ...
        expect("goop.setAttribute(7, 'ph')", undefined);
        expect("goop.getAttribute('ph')", 7);

        expect("goop.content", "Spurious Nonsense");
        expect("goop.content = ' for All'", " for All");

        // TODO(tsepez): assigning new content seems to append although it
        // wasn't included in the return value of the assignment above.
        expect("goop.content", "Spurious Nonsense for All");
      ]]></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
