6 "gopkg.in/fatih/set.v0"
7 gover "github.com/hashicorp/go-version"
10 func TestCompare(t *testing.T) {
11 v1, err := gover.NewVersion(Version)
13 t.Fatal("Version 1 format error.")
15 v2, err := gover.NewVersion(Version + "+f873dfca")
17 t.Fatal("Version 2 format error.")
19 if v1.GreaterThan(v2) || v1.GreaterThan(v2) {
20 t.Error("Version comparison error.")
24 func TestCompatibleWith(t *testing.T) {
67 for i, c := range cases {
69 if result, _ := CompatibleWith(c.b); c.result != result {
70 t.Errorf("case %d: got %t want %t", i, c.result, result)
75 func TestCheckUpdate(t *testing.T) {
79 remotePeers map[string]string
85 desc: "has large version number update",
87 remotePeers: map[string]string{"peer1": "1.0", "peer2": "2.0", "peer3": "1.0.3"},
88 wantStatus: hasMUpdate,
89 wantmaxVerSeen: "2.0",
93 desc: "some remote version less than local version, but some remote verison larger than local version",
95 remotePeers: map[string]string{"peer1": "0.8", "peer2": "1.1", "peer3": "1.0.3", "peer4": "0.9"},
96 wantStatus: hasUpdate,
97 wantmaxVerSeen: "1.1",
101 desc: "has small version number update",
103 remotePeers: map[string]string{"peer1": "1.0", "peer2": "1.0.3", "peer3": "1.0.2"},
104 wantStatus: hasUpdate,
105 wantmaxVerSeen: "1.0.3",
109 desc: "the remote equals to local version",
111 remotePeers: map[string]string{"peer1": "1.0", "peer2": "1.0", "peer3": "1.0"},
112 wantStatus: noUpdate,
113 wantmaxVerSeen: "1.0",
117 desc: "the remote version less than local version",
119 remotePeers: map[string]string{"peer1": "0.8", "peer2": "0.8", "peer3": "0.8"},
120 wantStatus: noUpdate,
121 wantmaxVerSeen: "1.0",
126 for i, c := range cases {
127 status := &UpdateStatus{
128 maxVerSeen: c.localVer,
131 versionStatus: noUpdate,
133 for peer, remoteVer := range c.remotePeers {
134 status.seedSet.Add(peer)
135 if err := status.CheckUpdate(c.localVer, remoteVer, peer); err != nil {
140 if status.versionStatus != c.wantStatus {
141 t.Errorf("got version status:%d, want version status:%d", status.versionStatus, c.wantStatus)
144 if status.notified != c.wantNotified {
145 t.Errorf("got notified:%t, want notified:%t", status.notified, c.wantNotified)
148 if status.maxVerSeen != c.wantmaxVerSeen {
149 t.Errorf("#%d(%s) got max version seen%s, want max version seen%s", i, c.desc, status.maxVerSeen, c.wantmaxVerSeen)
154 // In case someone edit the iota part and have the mapping changed:
158 func TestFlag(t *testing.T) {
160 t.Error("noUpdate value error")
163 t.Error("hasUpdate value error")
166 t.Error("noUpdate value error")