Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}