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