Ticket #5: testrecutuple.py

File testrecutuple.py, 4.2 kB (added by Peter Murphy (pkmurphy at postmaster dot co dot uk), 2 years ago)

A small test file for recursive tuples

Line 
1 # This is the testrecu module. It contains code that tests the output and input of
2 # YAML with recursive structures. We concentrate on tuples, especially.
3
4 import yaml;
5
6 # We start with sequences.
7
8 print "We start with sequences."
9
10 RecSeq1 = [];
11 RecSeq1.append(RecSeq1);
12 print RecSeq1;
13 RecSeq1Dump = yaml.dump(RecSeq1);
14 print RecSeq1Dump;
15 RecSeq1Load = yaml.load(RecSeq1Dump);
16 print RecSeq1Load;
17
18
19
20 RecSeq2 = [];
21 RecSeq2.append(u"a");
22 RecSeq2.append(RecSeq2);
23 RecSeq2.append(u"b");
24 print RecSeq2;
25 RecSeq2Dump = yaml.dump(RecSeq2);
26 print RecSeq2Dump;
27 RecSeq2Load = yaml.load(RecSeq2Dump);
28 print RecSeq2Load;
29
30
31 RecSeq3 = [];
32 RecSeq3a = [];
33 RecSeq3.append(RecSeq3a);
34 RecSeq3a.append(RecSeq3);
35 print RecSeq3;
36 RecSeq3Dump = yaml.dump(RecSeq3);
37 print RecSeq3Dump;
38 RecSeq3Load = yaml.load(RecSeq3Dump);
39 print RecSeq3Load;
40
41
42 RecSeq4 = [];
43 RecSeq4a = [];
44 RecSeq4.append(RecSeq4a);
45 RecSeq4a.append(u"a");
46 RecSeq4a.append(RecSeq4);
47 RecSeq4a.append(u"b");
48 print RecSeq4;
49 RecSeq4Dump = yaml.dump(RecSeq4);
50 print RecSeq4Dump;
51 RecSeq4Load = yaml.load(RecSeq4Dump);
52 print RecSeq4Load;
53
54 print "End sequences."
55 print "We start with maps."
56
57 RecMap1 = {};
58 RecMap1["a"]= RecMap1;
59 print RecMap1;
60 RecMap1Dump = yaml.dump(RecMap1);
61 print RecMap1Dump;
62 RecMap1Load = yaml.load(RecMap1Dump);
63 print RecMap1Load;
64
65 RecMap2 = {};
66 RecMap2["a"] = u"d";
67 RecMap2["b"] = RecMap1;
68 RecMap2["c"] = u"e";
69 print RecMap2;
70 RecMap2Dump = yaml.dump(RecMap2);
71 print RecMap2Dump;
72 RecMap2Load = yaml.load(RecMap2Dump);
73 print RecMap2Load;
74
75 RecMap3 = {};
76 RecMap3a = {};
77 RecMap3["a"] = RecMap3a;
78 RecMap3a["b"] = RecMap3;
79 print RecMap3;
80 RecMap3Dump = yaml.dump(RecMap3);
81 print RecMap3Dump;
82 RecMap3Load = yaml.load(RecMap3Dump);
83 print RecMap3Load;
84
85 RecMap4 = {};
86 RecMap4a = {};
87 RecMap4["a"] = RecMap4a;
88 RecMap4a["b"] = u"c";
89 RecMap4a["d"] = RecMap4;
90 RecMap4a["e"] = u"f";
91 print RecMap4;
92 RecMap4Dump = yaml.dump(RecMap4);
93 print RecMap4Dump;
94 RecMap4Load = yaml.load(RecMap4Dump);
95 print RecMap4Load;
96 print "End maps."
97
98 # We try tuple code.
99
100 print "This is the tuple code.";
101
102 OurList = [];
103 OurTuple = tuple([OurList]);
104 OurList.append(OurTuple);
105 print OurTuple;
106 V = yaml.dump(OurTuple);
107 print V;
108 W = yaml.load(V);
109 print W;
110
111 print OurList;
112 V = yaml.dump(OurList);
113 print V;
114 W = yaml.load(V);
115 print W;
116
117
118 A = [];
119 B = ("a", A);
120 A.append(B);
121 print A;
122 V = yaml.dump(A);
123 print V;
124 W = yaml.load(V);
125 print W;
126 print B;
127 V = yaml.dump(B);
128 print V;
129 W = yaml.load(V);
130 print W;
131
132
133 A = [];
134 B = (A, "a");
135 A.append(B);
136 print A;
137 V = yaml.dump(A);
138 print V;
139 W = yaml.load(V);
140 print W;
141 print B;
142 V = yaml.dump(B);
143 print V;
144 W = yaml.load(V);
145 print W;
146
147 A = [];
148 B = (A, "a", "b",);
149 A.append(B);
150 print A;
151 V = yaml.dump(A);
152 print V;
153 W = yaml.load(V);
154 print W;
155 print B;
156 V = yaml.dump(B);
157 print V;
158 W = yaml.load(V);
159 print W;
160
161 A = [];
162 B = ("a", A, "b",);
163 A.append(B);
164 print A;
165 V = yaml.dump(A);
166 print V;
167 W = yaml.load(V);
168 print W;
169 print B;
170 V = yaml.dump(B);
171 print V;
172 W = yaml.load(V);
173 print W;
174
175 A = [];
176 B = ("a", "b", A,);
177 A.append(B);
178 print A;
179 V = yaml.dump(A);
180 print V;
181 W = yaml.load(V);
182 print W;
183 print B;
184 V = yaml.dump(B);
185 print V;
186 W = yaml.load(V);
187 print W;
188
189 A = [];
190 B = {};
191 C = ("a", A, "b", B, "d");
192 A.append(C);
193 B["c"] = C;
194 print A
195 V = yaml.dump(A);
196 print V;
197 W = yaml.load(V);
198 print W;
199 print B
200 V = yaml.dump(B);
201 print V;
202 W = yaml.load(V);
203 print W;
204 print C
205 V = yaml.dump(C);
206 print V;
207 W = yaml.load(V);
208 print W;
209
210 print "This is the end of the tuple code."
211 print "This is the recursive object test."
212
213 class TestRecurseClass:
214     def __init__(self):
215         self.a = "a";
216         self.b = self;
217         self.c = "b";
218        
219 D = TestRecurseClass();
220 print D;
221 E = yaml.dump(D);
222 print E;
223 F = yaml.load(E);
224 print F;
225
226 print "This is the end of the recursive test code."
227 print "This is some test code for classes."
228
229 Q = "--- !!map { !!python/tuple [ 'a', ]: 'b',}"
230 R = yaml.load(Q);
231 print R;
232
233
234 Q = "--- &A !!set { foo: *A }"
235 R = yaml.load(Q);
236 print R;
237
238 print "This should work."
239
240 class C:
241     pass;
242
243 c = C()
244 s = set([c])
245 c.s = s
246 print c;
247 D = yaml.dump(c);
248 print D;
249 E = yaml.load(D);
250 print E;
251
252
253 print "This should not work."
254
255 Q = "--- &A !!set { *A }"
256 R = yaml.load(Q);
257 print R;
258
259