tests.gno
1.99 Kb ยท 116 lines
1package tests
2
3import (
4 "std"
5
6 "gno.land/p/demo/nestedpkg"
7 rsubtests "gno.land/r/demo/tests/subtests"
8)
9
10var counter int
11
12func IncCounter() {
13 counter++
14}
15
16func Counter() int {
17 return counter
18}
19
20func CurrentRealmPath() string {
21 return std.CurrentRealm().PkgPath()
22}
23
24var initOriginCaller = std.OriginCaller()
25
26func InitOriginCaller() std.Address {
27 return initOriginCaller
28}
29
30func CallAssertOriginCall() {
31 std.AssertOriginCall()
32}
33
34func CallIsOriginCall() bool {
35 return std.PreviousRealm().IsUser()
36}
37
38func CallSubtestsAssertOriginCall() {
39 rsubtests.CallAssertOriginCall()
40}
41
42func CallSubtestsIsOriginCall() bool {
43 return rsubtests.CallIsOriginCall()
44}
45
46//----------------------------------------
47// Test structure to ensure cross-realm modification is prevented.
48
49type TestRealmObject struct {
50 Field string
51}
52
53var TestRealmObjectValue TestRealmObject
54
55func ModifyTestRealmObject(t *TestRealmObject) {
56 t.Field += "_modified"
57}
58
59func (t *TestRealmObject) Modify() {
60 t.Field += "_modified"
61}
62
63//----------------------------------------
64// Test helpers to test a particular realm bug.
65
66type TestNode struct {
67 Name string
68 Child *TestNode
69}
70
71var (
72 gTestNode1 *TestNode
73 gTestNode2 *TestNode
74 gTestNode3 *TestNode
75)
76
77func InitTestNodes() {
78 gTestNode1 = &TestNode{Name: "first"}
79 gTestNode2 = &TestNode{Name: "second", Child: &TestNode{Name: "second's child"}}
80}
81
82func ModTestNodes() {
83 tmp := &TestNode{}
84 tmp.Child = gTestNode2.Child
85 gTestNode3 = tmp // set to new-real
86 // gTestNode1 = tmp.Child // set back to original is-real
87 gTestNode3 = nil // delete.
88}
89
90func PrintTestNodes() {
91 println(gTestNode2.Child.Name)
92}
93
94func GetPreviousRealm() std.Realm {
95 return std.PreviousRealm()
96}
97
98func GetRSubtestsPreviousRealm() std.Realm {
99 return rsubtests.GetPreviousRealm()
100}
101
102func Exec(fn func()) {
103 fn()
104}
105
106func IsCallerSubPath() bool {
107 return nestedpkg.IsCallerSubPath()
108}
109
110func IsCallerParentPath() bool {
111 return nestedpkg.IsCallerParentPath()
112}
113
114func HasCallerSameNamespace() bool {
115 return nestedpkg.IsSameNamespace()
116}