z_4_filetest.gno

28.62 Kb ยท 918 lines
  1// PKGPATH: gno.land/r/demo/boards_test
  2package boards_test
  3
  4// SEND: 200000000ugnot
  5
  6import (
  7	"std"
  8	"strconv"
  9
 10	"gno.land/p/demo/testutils"
 11	"gno.land/r/demo/boards"
 12	"gno.land/r/demo/users"
 13)
 14
 15var (
 16	bid boards.BoardID
 17	pid boards.PostID
 18)
 19
 20func init() {
 21	caller := testutils.TestAddress("caller")
 22	std.TestSetRealm(std.NewUserRealm(caller))
 23	users.Register("", "gnouser", "my profile")
 24
 25	bid = boards.CreateBoard("test_board")
 26	boards.CreateThread(bid, "First Post (title)", "Body of the first post. (body)")
 27	pid = boards.CreateThread(bid, "Second Post (title)", "Body of the second post. (body)")
 28	rid := boards.CreateReply(bid, pid, pid, "Reply of the second post")
 29	println(rid)
 30}
 31
 32func main() {
 33	caller := testutils.TestAddress("caller")
 34	std.TestSetRealm(std.NewUserRealm(caller))
 35	rid2 := boards.CreateReply(bid, pid, pid, "Second reply of the second post")
 36	println(rid2)
 37	println(boards.Render("test_board/" + strconv.Itoa(int(pid))))
 38}
 39
 40// Output:
 41// 3
 42// 4
 43// # Second Post (title)
 44//
 45// Body of the second post. (body)
 46// \- [@gnouser](/r/demo/users:gnouser), [2009-02-13 11:31pm (UTC)](/r/demo/boards:test_board/2) \[[reply](/r/demo/boards$help&func=CreateReply&bid=1&postid=2&threadid=2)] \[[repost](/r/demo/boards$help&func=CreateRepost&bid=1&postid=2)] \[[x](/r/demo/boards$help&func=DeletePost&bid=1&postid=2&threadid=2)]
 47//
 48// > Reply of the second post
 49// > \- [@gnouser](/r/demo/users:gnouser), [2009-02-13 11:31pm (UTC)](/r/demo/boards:test_board/2/3) \[[reply](/r/demo/boards$help&func=CreateReply&bid=1&postid=3&threadid=2)] \[[x](/r/demo/boards$help&func=DeletePost&bid=1&postid=3&threadid=2)]
 50//
 51// > Second reply of the second post
 52// > \- [@gnouser](/r/demo/users:gnouser), [2009-02-13 11:31pm (UTC)](/r/demo/boards:test_board/2/4) \[[reply](/r/demo/boards$help&func=CreateReply&bid=1&postid=4&threadid=2)] \[[x](/r/demo/boards$help&func=DeletePost&bid=1&postid=4&threadid=2)]
 53//
 54
 55// Realm:
 56// switchrealm["gno.land/r/demo/users"]
 57// switchrealm["gno.land/r/demo/boards"]
 58// u[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:111]={
 59//     "ObjectInfo": {
 60//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:111",
 61//         "ModTime": "123",
 62//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:123",
 63//         "RefCount": "1"
 64//     },
 65//     "Value": {
 66//         "T": {
 67//             "@type": "/gno.RefType",
 68//             "ID": "gno.land/p/demo/avl.Node"
 69//         },
 70//         "V": {
 71//             "@type": "/gno.RefValue",
 72//             "Hash": "68663c8895d37d479e417c11e21badfe21345c61",
 73//             "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:112"
 74//         }
 75//     }
 76// }
 77// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:125]={
 78//     "Fields": [
 79//         {
 80//             "T": {
 81//                 "@type": "/gno.PrimitiveType",
 82//                 "value": "16"
 83//             },
 84//             "V": {
 85//                 "@type": "/gno.StringValue",
 86//                 "value": "0000000004"
 87//             }
 88//         },
 89//         {
 90//             "T": {
 91//                 "@type": "/gno.PointerType",
 92//                 "Elt": {
 93//                     "@type": "/gno.RefType",
 94//                     "ID": "gno.land/r/demo/boards.Post"
 95//                 }
 96//             },
 97//             "V": {
 98//                 "@type": "/gno.PointerValue",
 99//                 "Base": {
100//                     "@type": "/gno.RefValue",
101//                     "Escaped": true,
102//                     "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:126"
103//                 },
104//                 "Index": "0",
105//                 "TV": null
106//             }
107//         },
108//         {
109//             "T": {
110//                 "@type": "/gno.PrimitiveType",
111//                 "value": "64"
112//             }
113//         },
114//         {
115//             "N": "AQAAAAAAAAA=",
116//             "T": {
117//                 "@type": "/gno.PrimitiveType",
118//                 "value": "32"
119//             }
120//         },
121//         {
122//             "T": {
123//                 "@type": "/gno.PointerType",
124//                 "Elt": {
125//                     "@type": "/gno.RefType",
126//                     "ID": "gno.land/p/demo/avl.Node"
127//                 }
128//             }
129//         },
130//         {
131//             "T": {
132//                 "@type": "/gno.PointerType",
133//                 "Elt": {
134//                     "@type": "/gno.RefType",
135//                     "ID": "gno.land/p/demo/avl.Node"
136//                 }
137//             }
138//         }
139//     ],
140//     "ObjectInfo": {
141//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:125",
142//         "ModTime": "0",
143//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:124",
144//         "RefCount": "1"
145//     }
146// }
147// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:124]={
148//     "ObjectInfo": {
149//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:124",
150//         "ModTime": "0",
151//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:123",
152//         "RefCount": "1"
153//     },
154//     "Value": {
155//         "T": {
156//             "@type": "/gno.RefType",
157//             "ID": "gno.land/p/demo/avl.Node"
158//         },
159//         "V": {
160//             "@type": "/gno.RefValue",
161//             "Hash": "3f34ac77289aa1d5f9a2f8b6d083138325816fb0",
162//             "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:125"
163//         }
164//     }
165// }
166// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:123]={
167//     "Fields": [
168//         {
169//             "T": {
170//                 "@type": "/gno.PrimitiveType",
171//                 "value": "16"
172//             },
173//             "V": {
174//                 "@type": "/gno.StringValue",
175//                 "value": "0000000004"
176//             }
177//         },
178//         {},
179//         {
180//             "N": "AQAAAAAAAAA=",
181//             "T": {
182//                 "@type": "/gno.PrimitiveType",
183//                 "value": "64"
184//             }
185//         },
186//         {
187//             "N": "AgAAAAAAAAA=",
188//             "T": {
189//                 "@type": "/gno.PrimitiveType",
190//                 "value": "32"
191//             }
192//         },
193//         {
194//             "T": {
195//                 "@type": "/gno.PointerType",
196//                 "Elt": {
197//                     "@type": "/gno.RefType",
198//                     "ID": "gno.land/p/demo/avl.Node"
199//                 }
200//             },
201//             "V": {
202//                 "@type": "/gno.PointerValue",
203//                 "Base": {
204//                     "@type": "/gno.RefValue",
205//                     "Hash": "94a6665a44bac6ede7f3e3b87173e537b12f9532",
206//                     "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:111"
207//                 },
208//                 "Index": "0",
209//                 "TV": null
210//             }
211//         },
212//         {
213//             "T": {
214//                 "@type": "/gno.PointerType",
215//                 "Elt": {
216//                     "@type": "/gno.RefType",
217//                     "ID": "gno.land/p/demo/avl.Node"
218//                 }
219//             },
220//             "V": {
221//                 "@type": "/gno.PointerValue",
222//                 "Base": {
223//                     "@type": "/gno.RefValue",
224//                     "Hash": "bc8e5b4e782a0bbc4ac9689681f119beb7b34d59",
225//                     "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:124"
226//                 },
227//                 "Index": "0",
228//                 "TV": null
229//             }
230//         }
231//     ],
232//     "ObjectInfo": {
233//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:123",
234//         "ModTime": "0",
235//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:122",
236//         "RefCount": "1"
237//     }
238// }
239// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:122]={
240//     "ObjectInfo": {
241//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:122",
242//         "ModTime": "0",
243//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:106",
244//         "RefCount": "1"
245//     },
246//     "Value": {
247//         "T": {
248//             "@type": "/gno.RefType",
249//             "ID": "gno.land/p/demo/avl.Node"
250//         },
251//         "V": {
252//             "@type": "/gno.RefValue",
253//             "Hash": "9957eadbc91dd32f33b0d815e041a32dbdea0671",
254//             "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:123"
255//         }
256//     }
257// }
258// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:128]={
259//     "Fields": [
260//         {
261//             "T": {
262//                 "@type": "/gno.PointerType",
263//                 "Elt": {
264//                     "@type": "/gno.RefType",
265//                     "ID": "gno.land/p/demo/avl.Node"
266//                 }
267//             }
268//         }
269//     ],
270//     "ObjectInfo": {
271//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:128",
272//         "ModTime": "0",
273//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:127",
274//         "RefCount": "1"
275//     }
276// }
277// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:129]={
278//     "Fields": [
279//         {
280//             "T": {
281//                 "@type": "/gno.PointerType",
282//                 "Elt": {
283//                     "@type": "/gno.RefType",
284//                     "ID": "gno.land/p/demo/avl.Node"
285//                 }
286//             }
287//         }
288//     ],
289//     "ObjectInfo": {
290//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:129",
291//         "ModTime": "0",
292//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:127",
293//         "RefCount": "1"
294//     }
295// }
296// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:130]={
297//     "Fields": [
298//         {
299//             "T": {
300//                 "@type": "/gno.PointerType",
301//                 "Elt": {
302//                     "@type": "/gno.RefType",
303//                     "ID": "gno.land/p/demo/avl.Node"
304//                 }
305//             }
306//         }
307//     ],
308//     "ObjectInfo": {
309//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:130",
310//         "ModTime": "0",
311//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:127",
312//         "RefCount": "1"
313//     }
314// }
315// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:131]={
316//     "Fields": [
317//         {
318//             "N": "AAAAgJSeXbo=",
319//             "T": {
320//                 "@type": "/gno.PrimitiveType",
321//                 "value": "65536"
322//             }
323//         },
324//         {
325//             "N": "AbSNdvQQIhE=",
326//             "T": {
327//                 "@type": "/gno.PrimitiveType",
328//                 "value": "1024"
329//             }
330//         },
331//         {
332//             "T": {
333//                 "@type": "/gno.PointerType",
334//                 "Elt": {
335//                     "@type": "/gno.RefType",
336//                     "ID": "time.Location"
337//                 }
338//             },
339//             "V": {
340//                 "@type": "/gno.PointerValue",
341//                 "Base": {
342//                     "@type": "/gno.RefValue",
343//                     "Escaped": true,
344//                     "ObjectID": "336074805fc853987abe6f7fe3ad97a6a6f3077a:2"
345//                 },
346//                 "Index": "182",
347//                 "TV": null
348//             }
349//         }
350//     ],
351//     "ObjectInfo": {
352//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:131",
353//         "ModTime": "0",
354//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:127",
355//         "RefCount": "1"
356//     }
357// }
358// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:132]={
359//     "Fields": [
360//         {
361//             "T": {
362//                 "@type": "/gno.PrimitiveType",
363//                 "value": "65536"
364//             }
365//         },
366//         {
367//             "T": {
368//                 "@type": "/gno.PrimitiveType",
369//                 "value": "1024"
370//             }
371//         },
372//         {
373//             "T": {
374//                 "@type": "/gno.PointerType",
375//                 "Elt": {
376//                     "@type": "/gno.RefType",
377//                     "ID": "time.Location"
378//                 }
379//             }
380//         }
381//     ],
382//     "ObjectInfo": {
383//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:132",
384//         "ModTime": "0",
385//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:127",
386//         "RefCount": "1"
387//     }
388// }
389// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:127]={
390//     "Fields": [
391//         {
392//             "T": {
393//                 "@type": "/gno.PointerType",
394//                 "Elt": {
395//                     "@type": "/gno.RefType",
396//                     "ID": "gno.land/r/demo/boards.Board"
397//                 }
398//             },
399//             "V": {
400//                 "@type": "/gno.PointerValue",
401//                 "Base": {
402//                     "@type": "/gno.RefValue",
403//                     "Escaped": true,
404//                     "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:84"
405//                 },
406//                 "Index": "0",
407//                 "TV": null
408//             }
409//         },
410//         {
411//             "N": "BAAAAAAAAAA=",
412//             "T": {
413//                 "@type": "/gno.RefType",
414//                 "ID": "gno.land/r/demo/boards.PostID"
415//             }
416//         },
417//         {
418//             "T": {
419//                 "@type": "/gno.RefType",
420//                 "ID": "std.Address"
421//             },
422//             "V": {
423//                 "@type": "/gno.StringValue",
424//                 "value": "g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm"
425//             }
426//         },
427//         {
428//             "T": {
429//                 "@type": "/gno.PrimitiveType",
430//                 "value": "16"
431//             },
432//             "V": {
433//                 "@type": "/gno.StringValue",
434//                 "value": ""
435//             }
436//         },
437//         {
438//             "T": {
439//                 "@type": "/gno.PrimitiveType",
440//                 "value": "16"
441//             },
442//             "V": {
443//                 "@type": "/gno.StringValue",
444//                 "value": "Second reply of the second post"
445//             }
446//         },
447//         {
448//             "T": {
449//                 "@type": "/gno.RefType",
450//                 "ID": "gno.land/p/demo/avl.Tree"
451//             },
452//             "V": {
453//                 "@type": "/gno.RefValue",
454//                 "Hash": "f91e355bd19240f0f3350a7fa0e6a82b72225916",
455//                 "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:128"
456//             }
457//         },
458//         {
459//             "T": {
460//                 "@type": "/gno.RefType",
461//                 "ID": "gno.land/p/demo/avl.Tree"
462//             },
463//             "V": {
464//                 "@type": "/gno.RefValue",
465//                 "Hash": "9ee9c4117be283fc51ffcc5ecd65b75ecef5a9dd",
466//                 "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:129"
467//             }
468//         },
469//         {
470//             "T": {
471//                 "@type": "/gno.RefType",
472//                 "ID": "gno.land/p/demo/avl.Tree"
473//             },
474//             "V": {
475//                 "@type": "/gno.RefValue",
476//                 "Hash": "eb768b0140a5fe95f9c58747f0960d647dacfd42",
477//                 "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:130"
478//             }
479//         },
480//         {
481//             "N": "AgAAAAAAAAA=",
482//             "T": {
483//                 "@type": "/gno.RefType",
484//                 "ID": "gno.land/r/demo/boards.PostID"
485//             }
486//         },
487//         {
488//             "N": "AgAAAAAAAAA=",
489//             "T": {
490//                 "@type": "/gno.RefType",
491//                 "ID": "gno.land/r/demo/boards.PostID"
492//             }
493//         },
494//         {
495//             "T": {
496//                 "@type": "/gno.RefType",
497//                 "ID": "gno.land/r/demo/boards.BoardID"
498//             }
499//         },
500//         {
501//             "T": {
502//                 "@type": "/gno.RefType",
503//                 "ID": "time.Time"
504//             },
505//             "V": {
506//                 "@type": "/gno.RefValue",
507//                 "Hash": "0fd3352422af0a56a77ef2c9e88f479054e3d51f",
508//                 "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:131"
509//             }
510//         },
511//         {
512//             "T": {
513//                 "@type": "/gno.RefType",
514//                 "ID": "time.Time"
515//             },
516//             "V": {
517//                 "@type": "/gno.RefValue",
518//                 "Hash": "bed4afa8ffdbbf775451c947fc68b27a345ce32a",
519//                 "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:132"
520//             }
521//         }
522//     ],
523//     "ObjectInfo": {
524//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:127",
525//         "ModTime": "0",
526//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:126",
527//         "RefCount": "1"
528//     }
529// }
530// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:126]={
531//     "ObjectInfo": {
532//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:126",
533//         "IsEscaped": true,
534//         "ModTime": "0",
535//         "RefCount": "2"
536//     },
537//     "Value": {
538//         "T": {
539//             "@type": "/gno.RefType",
540//             "ID": "gno.land/r/demo/boards.Post"
541//         },
542//         "V": {
543//             "@type": "/gno.RefValue",
544//             "Hash": "c45bbd47a46681a63af973db0ec2180922e4a8ae",
545//             "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:127"
546//         }
547//     }
548// }
549// u[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:120]={
550//     "ObjectInfo": {
551//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:120",
552//         "ModTime": "134",
553//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:134",
554//         "RefCount": "1"
555//     },
556//     "Value": {
557//         "T": {
558//             "@type": "/gno.RefType",
559//             "ID": "gno.land/p/demo/avl.Node"
560//         },
561//         "V": {
562//             "@type": "/gno.RefValue",
563//             "Hash": "dc1f011553dc53e7a846049e08cc77fa35ea6a51",
564//             "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:121"
565//         }
566//     }
567// }
568// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:136]={
569//     "Fields": [
570//         {
571//             "T": {
572//                 "@type": "/gno.PrimitiveType",
573//                 "value": "16"
574//             },
575//             "V": {
576//                 "@type": "/gno.StringValue",
577//                 "value": "0000000004"
578//             }
579//         },
580//         {
581//             "T": {
582//                 "@type": "/gno.PointerType",
583//                 "Elt": {
584//                     "@type": "/gno.RefType",
585//                     "ID": "gno.land/r/demo/boards.Post"
586//                 }
587//             },
588//             "V": {
589//                 "@type": "/gno.PointerValue",
590//                 "Base": {
591//                     "@type": "/gno.RefValue",
592//                     "Escaped": true,
593//                     "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:126"
594//                 },
595//                 "Index": "0",
596//                 "TV": null
597//             }
598//         },
599//         {
600//             "T": {
601//                 "@type": "/gno.PrimitiveType",
602//                 "value": "64"
603//             }
604//         },
605//         {
606//             "N": "AQAAAAAAAAA=",
607//             "T": {
608//                 "@type": "/gno.PrimitiveType",
609//                 "value": "32"
610//             }
611//         },
612//         {
613//             "T": {
614//                 "@type": "/gno.PointerType",
615//                 "Elt": {
616//                     "@type": "/gno.RefType",
617//                     "ID": "gno.land/p/demo/avl.Node"
618//                 }
619//             }
620//         },
621//         {
622//             "T": {
623//                 "@type": "/gno.PointerType",
624//                 "Elt": {
625//                     "@type": "/gno.RefType",
626//                     "ID": "gno.land/p/demo/avl.Node"
627//                 }
628//             }
629//         }
630//     ],
631//     "ObjectInfo": {
632//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:136",
633//         "ModTime": "0",
634//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:135",
635//         "RefCount": "1"
636//     }
637// }
638// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:135]={
639//     "ObjectInfo": {
640//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:135",
641//         "ModTime": "0",
642//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:134",
643//         "RefCount": "1"
644//     },
645//     "Value": {
646//         "T": {
647//             "@type": "/gno.RefType",
648//             "ID": "gno.land/p/demo/avl.Node"
649//         },
650//         "V": {
651//             "@type": "/gno.RefValue",
652//             "Hash": "96b86b4585c7f1075d7794180a5581f72733a7ab",
653//             "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:136"
654//         }
655//     }
656// }
657// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:134]={
658//     "Fields": [
659//         {
660//             "T": {
661//                 "@type": "/gno.PrimitiveType",
662//                 "value": "16"
663//             },
664//             "V": {
665//                 "@type": "/gno.StringValue",
666//                 "value": "0000000004"
667//             }
668//         },
669//         {},
670//         {
671//             "N": "AQAAAAAAAAA=",
672//             "T": {
673//                 "@type": "/gno.PrimitiveType",
674//                 "value": "64"
675//             }
676//         },
677//         {
678//             "N": "AgAAAAAAAAA=",
679//             "T": {
680//                 "@type": "/gno.PrimitiveType",
681//                 "value": "32"
682//             }
683//         },
684//         {
685//             "T": {
686//                 "@type": "/gno.PointerType",
687//                 "Elt": {
688//                     "@type": "/gno.RefType",
689//                     "ID": "gno.land/p/demo/avl.Node"
690//                 }
691//             },
692//             "V": {
693//                 "@type": "/gno.PointerValue",
694//                 "Base": {
695//                     "@type": "/gno.RefValue",
696//                     "Hash": "32274e1f28fb2b97d67a1262afd362d370de7faa",
697//                     "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:120"
698//                 },
699//                 "Index": "0",
700//                 "TV": null
701//             }
702//         },
703//         {
704//             "T": {
705//                 "@type": "/gno.PointerType",
706//                 "Elt": {
707//                     "@type": "/gno.RefType",
708//                     "ID": "gno.land/p/demo/avl.Node"
709//                 }
710//             },
711//             "V": {
712//                 "@type": "/gno.PointerValue",
713//                 "Base": {
714//                     "@type": "/gno.RefValue",
715//                     "Hash": "c2cfd6aec36a462f35bf02e5bf4a127aa1bb7ac2",
716//                     "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:135"
717//                 },
718//                 "Index": "0",
719//                 "TV": null
720//             }
721//         }
722//     ],
723//     "ObjectInfo": {
724//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:134",
725//         "ModTime": "0",
726//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:133",
727//         "RefCount": "1"
728//     }
729// }
730// c[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:133]={
731//     "ObjectInfo": {
732//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:133",
733//         "ModTime": "0",
734//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:107",
735//         "RefCount": "1"
736//     },
737//     "Value": {
738//         "T": {
739//             "@type": "/gno.RefType",
740//             "ID": "gno.land/p/demo/avl.Node"
741//         },
742//         "V": {
743//             "@type": "/gno.RefValue",
744//             "Hash": "5cb875179e86d32c517322af7a323b2a5f3e6cc5",
745//             "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:134"
746//         }
747//     }
748// }
749// u[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:85]={
750//     "Fields": [
751//         {
752//             "N": "AQAAAAAAAAA=",
753//             "T": {
754//                 "@type": "/gno.RefType",
755//                 "ID": "gno.land/r/demo/boards.BoardID"
756//             }
757//         },
758//         {
759//             "T": {
760//                 "@type": "/gno.PrimitiveType",
761//                 "value": "16"
762//             },
763//             "V": {
764//                 "@type": "/gno.StringValue",
765//                 "value": "/r/demo/boards:test_board"
766//             }
767//         },
768//         {
769//             "T": {
770//                 "@type": "/gno.PrimitiveType",
771//                 "value": "16"
772//             },
773//             "V": {
774//                 "@type": "/gno.StringValue",
775//                 "value": "test_board"
776//             }
777//         },
778//         {
779//             "T": {
780//                 "@type": "/gno.RefType",
781//                 "ID": "std.Address"
782//             },
783//             "V": {
784//                 "@type": "/gno.StringValue",
785//                 "value": "g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm"
786//             }
787//         },
788//         {
789//             "T": {
790//                 "@type": "/gno.RefType",
791//                 "ID": "gno.land/p/demo/avl.Tree"
792//             },
793//             "V": {
794//                 "@type": "/gno.RefValue",
795//                 "Hash": "a416a751c3a45a1e5cba11e737c51340b081e372",
796//                 "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:86"
797//             }
798//         },
799//         {
800//             "N": "BAAAAAAAAAA=",
801//             "T": {
802//                 "@type": "/gno.PrimitiveType",
803//                 "value": "65536"
804//             }
805//         },
806//         {
807//             "T": {
808//                 "@type": "/gno.RefType",
809//                 "ID": "time.Time"
810//             },
811//             "V": {
812//                 "@type": "/gno.RefValue",
813//                 "Hash": "36299fccbc13f2a84c4629fad4cb940f0bd4b1c6",
814//                 "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:87"
815//             }
816//         },
817//         {
818//             "T": {
819//                 "@type": "/gno.RefType",
820//                 "ID": "gno.land/p/demo/avl.Tree"
821//             },
822//             "V": {
823//                 "@type": "/gno.RefValue",
824//                 "Hash": "af6ed0268f99b7f369329094eb6dfaea7812708b",
825//                 "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:88"
826//             }
827//         }
828//     ],
829//     "ObjectInfo": {
830//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:85",
831//         "ModTime": "121",
832//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:84",
833//         "RefCount": "1"
834//     }
835// }
836// u[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:106]={
837//     "Fields": [
838//         {
839//             "T": {
840//                 "@type": "/gno.PointerType",
841//                 "Elt": {
842//                     "@type": "/gno.RefType",
843//                     "ID": "gno.land/p/demo/avl.Node"
844//                 }
845//             },
846//             "V": {
847//                 "@type": "/gno.PointerValue",
848//                 "Base": {
849//                     "@type": "/gno.RefValue",
850//                     "Hash": "9809329dc1ddc5d3556f7a8fa3c2cebcbf65560b",
851//                     "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:122"
852//                 },
853//                 "Index": "0",
854//                 "TV": null
855//             }
856//         }
857//     ],
858//     "ObjectInfo": {
859//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:106",
860//         "ModTime": "121",
861//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:105",
862//         "RefCount": "1"
863//     }
864// }
865// u[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:107]={
866//     "Fields": [
867//         {
868//             "T": {
869//                 "@type": "/gno.PointerType",
870//                 "Elt": {
871//                     "@type": "/gno.RefType",
872//                     "ID": "gno.land/p/demo/avl.Node"
873//                 }
874//             },
875//             "V": {
876//                 "@type": "/gno.PointerValue",
877//                 "Base": {
878//                     "@type": "/gno.RefValue",
879//                     "Hash": "ceae9a1c4ed28bb51062e6ccdccfad0caafd1c4f",
880//                     "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:133"
881//                 },
882//                 "Index": "0",
883//                 "TV": null
884//             }
885//         }
886//     ],
887//     "ObjectInfo": {
888//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:107",
889//         "ModTime": "121",
890//         "OwnerID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:105",
891//         "RefCount": "1"
892//     }
893// }
894// u[f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:84]={
895//     "ObjectInfo": {
896//         "ID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:84",
897//         "IsEscaped": true,
898//         "ModTime": "127",
899//         "RefCount": "6"
900//     },
901//     "Value": {
902//         "T": {
903//             "@type": "/gno.RefType",
904//             "ID": "gno.land/r/demo/boards.Board"
905//         },
906//         "V": {
907//             "@type": "/gno.RefValue",
908//             "Hash": "a88a9b837af217656ee27084309f7cd02cd94cb3",
909//             "ObjectID": "f6dbf411da22e67d74cd7ddba6a76cd7e14a4822:85"
910//         }
911//     }
912// }
913// switchrealm["gno.land/r/demo/boards"]
914// switchrealm["gno.land/r/demo/users"]
915// switchrealm["gno.land/r/demo/users"]
916// switchrealm["gno.land/r/demo/users"]
917// switchrealm["gno.land/r/demo/boards"]
918// switchrealm["gno.land/r/demo/boards_test"]