memberstore_test.gno
2.60 Kb ยท 125 lines
1package memberstore
2
3import (
4 "std"
5 "strconv"
6 "testing"
7
8 "gno.land/p/demo/urequire"
9)
10
11func TestPower(t *testing.T) {
12 ms := NewMembersByTier()
13 addMembers(ms, 100, T1)
14 addMembers(ms, 100, T2)
15 addMembers(ms, 100, T3)
16
17 Tiers.Iterate("", "", func(key string, value interface{}) bool {
18 po := value.(Tier).PowerHandler(ms, Tiers)
19 if key == T1 && po != 3.0 {
20 t.Fatal("wrong value for T1")
21 }
22 if key == T2 && po != 2.0 {
23 t.Fatal("wrong value for T2")
24 }
25 if key == T3 && po != 1.0 {
26 t.Fatal("wrong value for T3")
27 }
28
29 return false
30 })
31
32 ms = NewMembersByTier()
33 addMembers(ms, 100, T1)
34 addMembers(ms, 50, T2)
35 addMembers(ms, 10, T3)
36
37 Tiers.Iterate("", "", func(key string, value interface{}) bool {
38 po := value.(Tier).PowerHandler(ms, Tiers)
39 if key == T1 && po != 3.0 {
40 t.Fatal("wrong value for T1")
41 }
42 if key == T2 && po != 2.0 {
43 t.Fatal("wrong value for T2")
44 }
45 if key == T3 && po != 1.0 {
46 t.Fatal("wrong value for T3")
47 }
48
49 return false
50 })
51
52 ms = NewMembersByTier()
53 addMembers(ms, 100, T1)
54 addMembers(ms, 200, T2)
55 addMembers(ms, 100, T3)
56
57 Tiers.Iterate("", "", func(key string, value interface{}) bool {
58 po := value.(Tier).PowerHandler(ms, Tiers)
59 if key == T1 && po != 3.0 {
60 t.Fatal("wrong value for T1")
61 }
62 if key == T2 && po != 1.0 {
63 t.Fatal("wrong value for T2")
64 }
65 if key == T3 && po != 1.0 {
66 t.Fatal("wrong value for T3")
67 }
68
69 return false
70 })
71
72 ms = NewMembersByTier()
73 addMembers(ms, 100, T1)
74 addMembers(ms, 200, T2)
75 addMembers(ms, 1000, T3)
76
77 Tiers.Iterate("", "", func(key string, value interface{}) bool {
78 po := value.(Tier).PowerHandler(ms, Tiers)
79 if key == T1 && po != 3.0 {
80 t.Fatal("wrong value for T1")
81 }
82 if key == T2 && po != 1.0 {
83 t.Fatal("wrong value for T2")
84 }
85 if key == T3 && po != 0.1 {
86 t.Fatal("wrong value for T3")
87 }
88
89 return false
90 })
91}
92
93func TestCreateMembers(t *testing.T) {
94 ms := NewMembersByTier()
95 println("adding members...")
96 addMembers(ms, 10, "T1")
97 println("added T1")
98 addMembers(ms, 100, "T2")
99 println("added T2")
100 addMembers(ms, 1000, "T3")
101 println("added T3")
102
103 m, tier := ms.GetMember(std.Address("11T3"))
104 urequire.Equal(t, "T3", tier)
105
106 m, tier = ms.GetMember(std.Address("2000T1"))
107 urequire.Equal(t, "", tier)
108 if m != nil {
109 t.Fatal("member must be nil if not found")
110 }
111
112 tier = ms.RemoveMember(std.Address("1T1"))
113 urequire.Equal(t, "T1", tier)
114}
115
116func addMembers(ms MembersByTier, c int, tier string) {
117 // mt := avl.NewTree() XXX
118 ms.SetTier(tier)
119 for i := 0; i < c; i++ {
120 addr := std.Address(strconv.Itoa(i) + tier)
121 if err := ms.SetMember(tier, addr, &Member{}); err != nil {
122 panic(err.Error())
123 }
124 }
125}