Files

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)
}
}