summaryrefslogtreecommitdiff
path: root/src/globster/userlist/list_test.go
blob: cc49836474dc0dce0437e30586ecb5f83f75f082 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package userlist

// TODO: Also test the following:
// - Notifications
// - Multiple userlists
// - More fields

import (
	"go.blicky.net/tanja"
	"reflect"
	"testing"
)

func retExpect(t *testing.T, id string, r *tanja.ReturnPath, ret ...tanja.Tuple) {
	defer r.Close()
	i := 0
	for v := range r.Chan() {
		if i >= len(ret) {
			t.Errorf("%s: Received reply too many: %#v", id, v)
			return
		}
		if !reflect.DeepEqual(v, ret[i]) {
			t.Errorf("%s: Incorrect reply(%d): %#v", id, i, v)
		}
		i++
	}
	if i != len(ret) {
		t.Errorf("%s: Unexpected number of replies, got %d expected %d", id, i, len(ret))
	}
}

func TestList(t *testing.T) {
	n := tanja.NewNode()
	l := New(n)
	go l.Run()

	s := n.Session()

	retExpect(t, "empty1", s.Send(true, "userlist"))
	retExpect(t, "empty2", s.Send(true, "userlist", 1))
	retExpect(t, "empty3", s.Send(true, "userlist", 1, "get"))
	retExpect(t, "empty4", s.Send(true, "userlist", 1, "get", nil))
	retExpect(t, "set1", s.Send(true, "userlist", 1, "set", 1, tanja.Map("Name", "1")))
	retExpect(t, "stats1", s.Send(true, "userlist", 1, "stats"), tanja.Tup(1, 0))
	retExpect(t, "set2", s.Send(true, "userlist", 1, "set", 2, tanja.Map("CID", "ABC", "ShareSize", 1023)))
	retExpect(t, "stats2", s.Send(true, "userlist", 1, "stats"), tanja.Tup(2, 1023))
	retExpect(t, "get1", s.Send(true, "userlist", 1, "get", 1, "Name"), tanja.Tup(tanja.Map("Name", "1")))
	retExpect(t, "set3", s.Send(true, "userlist", 1, "set", 2, tanja.Map("ShareSize", 1020)))
	retExpect(t, "stats3", s.Send(true, "userlist", 1, "stats"), tanja.Tup(2, 1020))
	retExpect(t, "set4", s.Send(true, "userlist", 1, "set", 1, tanja.Map("ShareSize", 10)))
	retExpect(t, "stats4", s.Send(true, "userlist", 1, "stats"), tanja.Tup(2, 1030))
	retExpect(t, "getid1", s.Send(true, "userlist", 1, "getid", "ABC", "ShareSize"), tanja.Tup(tanja.Map("ShareSize", 1020)))
	retExpect(t, "get5", s.Send(true, "userlist", 1, "get", nil, "ShareSize"),
		tanja.Tup(tanja.Map("ShareSize", 10)), // Order is actually undefined
		tanja.Tup(tanja.Map("ShareSize", 1020)))
	retExpect(t, "del", s.Send(true, "userlist", 1, "del", nil))
	retExpect(t, "stats5", s.Send(true, "userlist", 1, "stats"), tanja.Tup(0, 0))
}