48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package domain
|
|
|
|
import (
|
|
"errors"
|
|
"math"
|
|
"testing"
|
|
)
|
|
|
|
func TestRevisionComparisonAndAdvance_HP_CMD_01(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
current CommandRevision
|
|
incoming CommandRevision
|
|
want RevisionRelation
|
|
wantErr error
|
|
}{
|
|
{"zero current", 0, 1, RevisionInvalid, ErrInvalidRevision},
|
|
{"zero incoming", 1, 0, RevisionInvalid, ErrInvalidRevision},
|
|
{"stale", 4, 3, RevisionStale, ErrStaleRevision},
|
|
{"current", 4, 4, RevisionCurrent, nil},
|
|
{"future", 4, 5, RevisionFuture, ErrFutureRevision},
|
|
}
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
if got := CompareRevision(test.current, test.incoming); got != test.want {
|
|
t.Fatalf("CompareRevision() = %v, want %v", got, test.want)
|
|
}
|
|
err := ValidateCurrentRevision(test.current, test.incoming)
|
|
if !errors.Is(err, test.wantErr) {
|
|
t.Fatalf("ValidateCurrentRevision() error = %v, want %v", err, test.wantErr)
|
|
}
|
|
})
|
|
}
|
|
|
|
if next, err := NextRevision(InitialCommandRevision); err != nil || next != 2 {
|
|
t.Fatalf("NextRevision(1) = (%d, %v), want (2, nil)", next, err)
|
|
}
|
|
if _, err := NextRevision(0); !errors.Is(err, ErrInvalidRevision) {
|
|
t.Fatalf("NextRevision(0) error = %v", err)
|
|
}
|
|
if _, err := NextRevision(math.MaxUint64); !errors.Is(err, ErrRevisionOverflow) {
|
|
t.Fatalf("NextRevision(max) error = %v", err)
|
|
}
|
|
}
|