From e3d86f84759e07ca644c5f77ef6a26e645de7364 Mon Sep 17 00:00:00 2001 From: Notime02 <94148329+Notime02@users.noreply.github.com> Date: Sun, 21 Jun 2026 22:55:07 +0300 Subject: [PATCH] fix(#2): [$40 BOUNTY] [Go] Add order book cancellation depth tests --- market/orderbook/orderbook_test.go | 58 ++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 market/orderbook/orderbook_test.go diff --git a/market/orderbook/orderbook_test.go b/market/orderbook/orderbook_test.go new file mode 100644 index 00000000..94880af7 --- /dev/null +++ b/market/orderbook/orderbook_test.go @@ -0,0 +1,58 @@ +// orderbook_test.go + +package orderbook + +import ( + "testing" +) + +func TestCancelBid(t *testing.T) { + ob := NewOrderBook() + orderID := ob.AddBid(100, 1) + ob.CancelOrder(orderID) + + if _, exists := ob.bids[orderID]; exists { + t.Fatalf("expected bid to be removed, but it still exists") + } +} + +func TestCancelAsk(t *testing.T) { + ob := NewOrderBook() + orderID := ob.AddAsk(100, 1) + ob.CancelOrder(orderID) + + if _, exists := ob.asks[orderID]; exists { + t.Fatalf("expected ask to be removed, but it still exists") + } +} + +func TestCancelUnknownOrder(t *testing.T) { + ob := NewOrderBook() + err := ob.CancelOrder("unknownID") + + if err != ErrOrderNotFound { + t.Fatalf("expected ErrOrderNotFound, got %v", err) + } +} + +func TestClosedBookRejectsOperations(t *testing.T) { + ob := NewOrderBook() + ob.Close() + err := ob.AddBid(100, 1) + + if err != ErrBookClosed { + t.Fatalf("expected ErrBookClosed, got %v", err) + } +} + +func TestSnapshotImmutability(t *testing.T) { + ob := NewOrderBook() + ob.AddBid(100, 1) + snapshot := ob.Snapshot() + + snapshot.Bids[0].Price = 200 // Attempt to mutate snapshot + + if ob.bids[1].Price == 200 { + t.Fatalf("expected internal bids to be immutable") + } +}