btree_dao_test.gno
1.81 Kb ยท 97 lines
1package btree_dao
2
3import (
4 "std"
5 "strings"
6 "testing"
7 "time"
8
9 "gno.land/p/demo/btree"
10 "gno.land/p/demo/uassert"
11 "gno.land/p/demo/urequire"
12)
13
14func setupTest() {
15 testing.SetOriginCaller(std.Address("g1ej0qca5ptsw9kfr64ey8jvfy9eacga6mpj2z0y"))
16 members = btree.New()
17}
18
19type TestElement struct {
20 value int
21}
22
23func (te *TestElement) Less(than btree.Record) bool {
24 return te.value < than.(*TestElement).value
25}
26
27func TestPlantTree(t *testing.T) {
28 setupTest()
29
30 tree := btree.New()
31 elements := []int{30, 10, 50, 20, 40}
32 for _, val := range elements {
33 tree.Insert(&TestElement{value: val})
34 }
35
36 err := PlantTree(tree)
37 urequire.NoError(t, err)
38
39 found := false
40 members.Ascend(func(record btree.Record) bool {
41 regDetails := record.(*RegistrationDetails)
42 if regDetails.UserBTree == tree {
43 found = true
44 return false
45 }
46 return true
47 })
48 uassert.True(t, found)
49
50 err = PlantTree(tree)
51 uassert.Error(t, err)
52
53 emptyTree := btree.New()
54 err = PlantTree(emptyTree)
55 uassert.Error(t, err)
56}
57
58func TestPlantSeed(t *testing.T) {
59 setupTest()
60
61 err := PlantSeed("Hello DAO!")
62 urequire.NoError(t, err)
63
64 found := false
65 members.Ascend(func(record btree.Record) bool {
66 regDetails := record.(*RegistrationDetails)
67 if regDetails.UserBTree == nil {
68 found = true
69 uassert.NotEmpty(t, regDetails.NFTID)
70 uassert.True(t, strings.Contains(regDetails.NFTID, "seed_"))
71 return false
72 }
73 return true
74 })
75 uassert.True(t, found)
76
77 err = PlantSeed("")
78 uassert.Error(t, err)
79}
80
81func TestRegistrationDetailsOrdering(t *testing.T) {
82 setupTest()
83
84 rd1 := &RegistrationDetails{
85 Address: std.Address("test1"),
86 RegTime: time.Now(),
87 NFTID: "0",
88 }
89 rd2 := &RegistrationDetails{
90 Address: std.Address("test2"),
91 RegTime: time.Now().Add(time.Hour),
92 NFTID: "1",
93 }
94
95 uassert.True(t, rd1.Less(rd2))
96 uassert.False(t, rd2.Less(rd1))
97}