Skip to content

Commit

Permalink
feat: TestSetPrevRealm, TestSetPrevAddr
Browse files Browse the repository at this point in the history
- moved test case into `gno.land/r/demo/tests`
  • Loading branch information
r3v4s committed Sep 15, 2023
1 parent ef6a55b commit 82c2cb6
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 0 deletions.
64 changes: 64 additions & 0 deletions examples/gno.land/r/demo/tests/z9_filetest.gno
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// PKGPATH: gno.land/r/set_prev_test
package set_prev_test

import (
"std"

"gno.land/r/demo/foo20"
"gno.land/r/demo/users"
)

var caller std.Address

func init() {
caller = std.GetOrigCaller()
println(caller)
}

func normal_faucet() {
foo20.Faucet()
b := foo20.BalanceOf(a2u(caller))
println(b)
}

func set_faucet() {
std.TestSetPrevAddr(caller)

foo20.Faucet()
b := foo20.BalanceOf(a2u(caller))
println(b)
}

func prev_realm_addr() {
println(std.GetOrigCaller())
println(std.PrevRealm())

std.TestSetPrevRealm("gno.land/r/demo/set_prev_realm_to_this")
println(std.GetOrigCaller())
println(std.PrevRealm())

std.TestSetPrevAddr("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5")
println(std.GetOrigCaller())
println(std.PrevRealm())
}

func main() {
normal_faucet()
set_faucet()
prev_realm_addr()
}

func a2u(addr std.Address) users.AddressOrName {
return users.AddressOrName(addr)
}

// Output:
// g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm
// 0
// 10000000
// g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm
// struct{("g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm" std.Address),("" string)}
// g1wymu47drhr0kuq2098m792lytgtj2nyx77yrsm
// struct{("g1felpzysry9ac8qx2acm6ev7u94rme2uyqzjh9z" std.Address),("gno.land/r/demo/set_prev_realm_to_this" string)}
// g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5
// struct{("g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5" std.Address),("" string)}
59 changes: 59 additions & 0 deletions gnovm/tests/imports.go
Original file line number Diff line number Diff line change
Expand Up @@ -620,6 +620,65 @@ func testPackageInjector(store gno.Store, pn *gno.PackageNode) {
m.Context = ctx
},
)
pn.DefineNative("TestSetPrevRealm",
gno.Flds( // params
"", "string",
),
gno.Flds( // results
),
func(m *gno.Machine) {
arg0 := m.LastBlock().GetParams1().TV
realm := arg0.GetString()

// set pkgPath
for i := m.NumFrames() - 1; i > 0; i-- {
fr := m.Frames[i]

if i != 2 {
fr.LastPackage = &gno.PackageValue{
PkgPath: realm,
}
m.Frames[i] = fr
}
}
},
)
pn.DefineNative("TestSetPrevAddr",
gno.Flds( // params
"", "Address",
),
gno.Flds( // results
),
func(m *gno.Machine) {
arg0 := m.LastBlock().GetParams1().TV
addr := arg0.GetString()

// overwrite context // TestSetOrigCaller
ctx := m.Context.(stdlibs.ExecContext)
ctx.OrigCaller = crypto.Bech32Address(addr)
m.Context = ctx

// Set PkgPath
lastPkgPath := ""
for i := m.NumFrames() - 1; i > 0; i-- {
fr := m.Frames[i]
if fr.LastPackage == nil || !fr.LastPackage.IsRealm() {
// Ignore non-realm frame
continue
}

pkgPath := fr.LastPackage.PkgPath
if lastPkgPath == "" {
lastPkgPath = pkgPath
}

fr.LastPackage = &gno.PackageValue{
PkgPath: "",
}
m.Frames[i] = fr
}
},
)
pn.DefineNative("TestIssueCoins",
gno.Flds( // params
"addr", "Address",
Expand Down

0 comments on commit 82c2cb6

Please sign in to comment.