You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.5 KiB
Go

package crdt
import (
"testing"
)
func TestGCounter(t *testing.T) {
t.Run("incr", func(t *testing.T) {
g := NewGCounter[string]()
if n := g.Total(); n != 0 {
t.Fatalf("new gcounter has count of %d, should be 0", n)
}
if err := g.Incr("jordan"); err != nil {
t.Fatalf("gcounter failed incr: %v", err)
}
if n := g.Total(); n != 1 {
t.Fatalf("new gcounter has count of %d, should be 1", n)
}
if err := g.Incr(""); err == nil {
t.Fatalf("incrementing the zero value succeeded, should have failed")
}
if err := g.Incr("jordan"); err != nil {
t.Fatalf("gcounter failed incr: %v", err)
}
if n := g.Total(); n != 2 {
t.Fatalf("new gcounter has count of %d, should be 2", n)
}
})
t.Run("add", func(t *testing.T) {
g := NewGCounter[string]()
if n := g.Total(); n != 0 {
t.Fatalf("new gcounter has count of %d, should be 0", n)
}
if err := g.Add("jordan", 4); err != nil {
t.Fatalf("gcounter failed incr: %v", err)
}
if n := g.Total(); n != 4 {
t.Fatalf("new gcounter has count of %d, should be 1", n)
}
if err := g.Add("", 10); err == nil {
t.Fatalf("adding to zero key succeeded, should have failed")
}
if err := g.Add("jordan", -3); err == nil {
t.Fatalf("adding negatively to the gcounter succeeded, should have failed")
}
if err := g.Add("jordan", 3); err != nil {
t.Fatalf("gcounter failed add: %v", err)
}
if n := g.Total(); n != 7 {
t.Fatalf("new gcounter has count of %d, should be 7", n)
}
})
}