Search Apps Documentation Source Content File Folder Download Copy Actions Download

memberstore_test.gno

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