1{{header}}
2{{include ../../xfa_catalog_1_0.fragment}}
3{{include ../../xfa_object_2_0.fragment}}
4{{include ../../xfa_preamble_3_0.fragment}}
5{{include ../../xfa_config_4_0.fragment}}
6{{object 5 0}} <<
7  {{streamlen}}
8>>
9stream
10<template>
11  <subform layout="tb" name="subform1">
12    <pageSet id="page" relation="orderedOccurrence">
13      <occur initial="1" max="1" min="1"/>
14      <pageArea id="Page1" name="Page1">
15        <occur max="1" min="1"/>
16        <contentArea h="100mm" w="200mm" x="0.25in" y="0.25in"/>
17        <medium long="297mm" short="210mm" stock="a4"/>
18      </pageArea>
19    </pageSet>
20    <subform layout="tb" name="subform2">
21      <occur initial="1" max="10" min="0" name="occur1">
22      </occur>
23      <field h="10mm" name="field1" w="40mm" x="10mm" y="10mm">
24        <event activity="ready" ref="$form">
25          <script contentType="application/x-javascript">
26            {{include ../expect.js}}
27            try {
28              var field = xfa.resolveNode("field2");
29              expect("field", "[object XFAObject]");
30
31              var list = xfa.record.nodes;
32              expect("list", "[object XFAObject]");
33              expect("list.length", 1);
34
35              var item = list.item(0);
36              expect("item", "[object XFAObject]");
37              expectError("list.item(1)");
38
39              // Incorrect argument types.
40              expectError("list.append(100)");
41              expectError("list.append({foo: 3})");
42
43              expect("list.append(field)", undefined);
44              expect("list.length", 2);
45
46              // Can only appear once.
47              expect("list.append(field)", undefined);
48              expect("list.length", 2);
49
50              // Incorrect argument types.
51              expectError("list.remove(100)");
52              expectError("list.remove({foo: 3})");
53
54              expect("list.remove(item)", undefined);
55              expect("list.length", 1);
56
57              // Removing a second time doesn't change things.
58              expect("list.remove(item)", undefined);
59              expect("list.length", 1);
60
61              expect("list.remove(field)", undefined);
62              expect("list.length", 0);
63
64              // Can't insert without a |before| element.
65              expect("list.append(field)", undefined);
66              expect("list.insert(item, field)", undefined);
67              expect("list.length", 2);
68
69              // Can only appear once.
70              expect("list.insert(item, field)", undefined);
71              expect("list.length", 2);
72
73              // TODO(tsepez): insertion before self hits a hard CHECK();
74              // expectError("list.insert(item, item)");
75
76            } catch (e) {
77              app.alert("truly unexpected error: " + e);
78            }
79          </script>
80        </event>
81      </field>
82      <field h="10mm" name="field2" w="40mm" x="10mm" y="10mm">
83      </field>
84    </subform>
85  </subform>
86</template>
87endstream
88endobj
89{{include ../../xfa_locale_6_0.fragment}}
90{{include ../../xfa_postamble_7_0.fragment}}
91{{include ../../xfa_pages_8_0.fragment}}
92{{xref}}
93{{trailer}}
94{{startxref}}
95%%EOF
96