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