z_4_filetest.gno

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