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}