diff options
Diffstat (limited to 'internal/ingest/service_order_test.go')
| -rw-r--r-- | internal/ingest/service_order_test.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/internal/ingest/service_order_test.go b/internal/ingest/service_order_test.go new file mode 100644 index 0000000..0e2299c --- /dev/null +++ b/internal/ingest/service_order_test.go @@ -0,0 +1,39 @@ +package ingest + +import ( + "testing" + + "github.com/Fuwn/plutia/internal/types" +) + +func TestCollectVerifiedInOrder_OutOfOrderInput(t *testing.T) { + results := make(chan verifyResult, 3) + results <- verifyResult{index: 2, op: types.ParsedOperation{Sequence: 3}} + results <- verifyResult{index: 0, op: types.ParsedOperation{Sequence: 1}} + results <- verifyResult{index: 1, op: types.ParsedOperation{Sequence: 2}} + close(results) + + ordered, err := collectVerifiedInOrder(3, results) + if err != nil { + t.Fatalf("collect verified: %v", err) + } + if len(ordered) != 3 { + t.Fatalf("ordered length mismatch: got %d want 3", len(ordered)) + } + for i := 0; i < 3; i++ { + if ordered[i].op.Sequence != uint64(i+1) { + t.Fatalf("unexpected sequence at index %d: got %d want %d", i, ordered[i].op.Sequence, i+1) + } + } +} + +func TestCollectVerifiedInOrder_MissingResult(t *testing.T) { + results := make(chan verifyResult, 2) + results <- verifyResult{index: 0, op: types.ParsedOperation{Sequence: 1}} + results <- verifyResult{index: 2, op: types.ParsedOperation{Sequence: 3}} + close(results) + + if _, err := collectVerifiedInOrder(3, results); err == nil { + t.Fatalf("expected missing result error") + } +} |