Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
168 changes: 56 additions & 112 deletions src/test/testOrderBook.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,163 +9,107 @@ class testOrderBook {

@Test
void placeOneAsk() {
// Init and checking start conditions
// Check default cond
OrderBook testSubject = new OrderBook();
assertEquals(0, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(-1f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice);
assertEquals(0f, testSubject.sittingVolume);
// Operation
Order newAsk = new Order(10.2f, 1.5f, Side.ASK, 1677539237L);
// Append singular ask
Order newAsk = new Order(30f, 3f, Side.ASK, 0L);
testSubject.placeOrder(newAsk);
// Checking Operation
// Verify modified values
assertEquals(1, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(10.2f, testSubject.asks.getFirst().price);
assertEquals(1.5f, testSubject.asks.getFirst().size);
assertEquals(1677539237L, testSubject.asks.getFirst().createdTs);
assertEquals(10.2f, testSubject.bestAskPrice);
assertEquals(30f, testSubject.asks.getFirst().price);
assertEquals(3f, testSubject.asks.getFirst().size);
assertEquals(0L, testSubject.asks.getFirst().createdTs);
assertEquals(30f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice); // Should be unaffected
assertEquals(1.5f, testSubject.sittingVolume);
assertEquals(3f, testSubject.sittingVolume);
}

@Test
void placeOneAskTwo() {
// Init and checking start conditions
void placeTwoAsk() {
// Init default OrderBook (no reason to check default cond)
OrderBook testSubject = new OrderBook();
assertEquals(0, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(-1f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice);
assertEquals(0f, testSubject.sittingVolume);
//Operation
Order newAsk = new Order(5.3f, 0.3f, Side.ASK, 1677599362L);
// Append (first) ask
Order newAsk = new Order(30f, 3f, Side.ASK, 0L);
testSubject.placeOrder(newAsk);
//Checking Operation
// Verify modified values
assertEquals(1, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(5.3f, testSubject.asks.getFirst().price);
assertEquals(0.3f, testSubject.asks.getFirst().size);
assertEquals(1677599362L, testSubject.asks.getFirst().createdTs);
assertEquals(5.3f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice);
assertEquals(0.3f, testSubject.sittingVolume);
assertEquals(30f, testSubject.asks.getFirst().price);
assertEquals(3f, testSubject.asks.getFirst().size);
assertEquals(0L, testSubject.asks.getFirst().createdTs);
assertEquals(30f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice); // Should be unaffected
assertEquals(3f, testSubject.sittingVolume);
// Append (second) ask
Order newAsk2 = new Order(92.f, 2.f, Side.ASK, 1L);
testSubject.placeOrder(newAsk2);
// Verify modified values
assertEquals(2, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(30f, testSubject.asks.getFirst().price);
assertEquals(3f, testSubject.asks.getFirst().size);
assertEquals(0L, testSubject.asks.getFirst().createdTs);
assertEquals(30f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice); // Should be unaffected
assertEquals(5f, testSubject.sittingVolume);
}

@Test
void placeOneBid() {
// Init and checking start conditions
// Init default OrderBook (no reason to check default cond)
OrderBook testSubject = new OrderBook();
assertEquals(0, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(-1f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice);
assertEquals(0f, testSubject.sittingVolume);
// Operation
Order newAsk = new Order(3.39f, 0.25f, Side.BID, 1677541289L);
testSubject.placeOrder(newAsk);
// Checking Operation
// Append singular bid
Order newBid = new Order(5f, 0.25f, Side.BID, 0L);
testSubject.placeOrder(newBid);
// Verify modified values
assertEquals(0, testSubject.asks.size());
assertEquals(1, testSubject.bids.size());
assertEquals(3.39f, testSubject.bids.getFirst().price);
assertEquals(5f, testSubject.bids.getFirst().price);
assertEquals(0.25f, testSubject.bids.getFirst().size);
assertEquals(1677541289L, testSubject.bids.getFirst().createdTs);
assertEquals(0L, testSubject.bids.getFirst().createdTs);
assertEquals(-1f, testSubject.bestAskPrice); // Should be unaffected
assertEquals(3.39f, testSubject.bestBidPrice);
assertEquals(5f, testSubject.bestBidPrice);
assertEquals(0.25f, testSubject.sittingVolume);
}

@Test
void placeOneBidTwo() {
// Init and checking start conditions
OrderBook testSubject = new OrderBook();
assertEquals(0, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(-1f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice);
assertEquals(0f, testSubject.sittingVolume);
//Operation
Order newBid = new Order(5.3f, 0.3f, Side.BID, 1677598183L);
testSubject.placeOrder(newBid);
//Checking Operation
assertEquals(0, testSubject.asks.size());
assertEquals(1, testSubject.bids.size());
assertEquals(5.3f, testSubject.bids.getFirst().price);
assertEquals(0.3f, testSubject.bids.getFirst().size);
assertEquals(1677598183L, testSubject.bids.getFirst().createdTs);
assertEquals(-1f, testSubject.bestAskPrice);
assertEquals(5.3f, testSubject.bestBidPrice);
assertEquals(0.3f, testSubject.sittingVolume);
}

@Test
void placeOneAskAndBid() {
// Init and checking start conditions
// Init default OrderBook (no reason to check default cond)
OrderBook testSubject = new OrderBook();
assertEquals(0, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(-1f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice);
assertEquals(0f, testSubject.sittingVolume);
// Operation
Order newAsk = new Order(10.2f, 1.5f, Side.ASK, 1677539237L);
// Append singular ask
Order newAsk = new Order(5f, 1.5f, Side.ASK, 0L);
testSubject.placeOrder(newAsk);
// Checking Operation
// Verify modified values
assertEquals(1, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(10.2f, testSubject.asks.getFirst().price);
assertEquals(5f, testSubject.asks.getFirst().price);
assertEquals(1.5f, testSubject.asks.getFirst().size);
assertEquals(1677539237L, testSubject.asks.getFirst().createdTs);
assertEquals(10.2f, testSubject.bestAskPrice);
assertEquals(0L, testSubject.asks.getFirst().createdTs);
assertEquals(5f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice); // Should be unaffected
assertEquals(1.5f, testSubject.sittingVolume);
//Operation
Order newBid = new Order(5.3f, 0.3f, Side.BID, 1677598183L);
// Append singular bid
Order newBid = new Order(92f, 0.25f, Side.BID, 10L);
testSubject.placeOrder(newBid);
//Checking Operation
// Verify modified values
assertEquals(1, testSubject.asks.size());
assertEquals(1, testSubject.bids.size());
assertEquals(5.3f, testSubject.bids.getFirst().price);
assertEquals(0.3f, testSubject.bids.getFirst().size);
assertEquals(1677598183L, testSubject.bids.getFirst().createdTs);
assertEquals(10.2f, testSubject.bestAskPrice);
assertEquals(5.3f, testSubject.bestBidPrice);
assertEquals(1.8f, testSubject.sittingVolume);
}

@Test
void placeTwoAsk() {
// Init and checking start conditions
OrderBook testSubject = new OrderBook();
assertEquals(0, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(-1f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice);
assertEquals(0f, testSubject.sittingVolume);
// Operation
Order newAsk = new Order(10.2f, 1.5f, Side.ASK, 1677539237L);
testSubject.placeOrder(newAsk);
// Checking Operation
assertEquals(1, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(10.2f, testSubject.asks.getFirst().price);
assertEquals(1.5f, testSubject.asks.getFirst().size);
assertEquals(1677539237L, testSubject.asks.getFirst().createdTs);
assertEquals(10.2f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice); // Should be unaffected
assertEquals(1.5f, testSubject.sittingVolume);
//Operation
Order newAskOne = new Order(5.3f, 0.3f, Side.ASK, 1677598183L);
testSubject.placeOrder(newAskOne);
//Checking Operation
assertEquals(2, testSubject.asks.size());
assertEquals(0, testSubject.bids.size());
assertEquals(5.3f, testSubject.asks.getFirst().price);
assertEquals(0.3f, testSubject.asks.getFirst().size);
assertEquals(1677598183L, testSubject.asks.getFirst().createdTs);
assertEquals(5.3f, testSubject.bestAskPrice);
assertEquals(-1f, testSubject.bestBidPrice);
assertEquals(1.8f, testSubject.sittingVolume);
assertEquals(92f, testSubject.bids.getFirst().price);
assertEquals(0.25f, testSubject.bids.getFirst().size);
assertEquals(10L, testSubject.bids.getFirst().createdTs);
assertEquals(5f, testSubject.bestAskPrice);
assertEquals(92f, testSubject.bestBidPrice);
assertEquals(1.75f, testSubject.sittingVolume);
}
}