@Test
  public void testShouldNotifyListenersWhenTradeDone() {

    TradeListener listener = mock(TradeListener.class);
    when(listener.getClientName()).thenReturn("test");

    OrderBook orderBook = mock(OrderBook.class);
    Trade trade = mock(Trade.class);

    Order order = mock(Order.class);
    when(order.getOrderID()).thenReturn(UUID.randomUUID());
    when(order.getClientName()).thenReturn("test");
    when(trade.getBid()).thenReturn(order);
    when(trade.getOffer()).thenReturn(order);

    List<Trade> result = new ArrayList<>();
    result.add(trade);
    when(orderBook.fillOrders()).thenReturn(result);

    OrderBookService service = new OrderBookService(orderBook);
    service.addListener(listener);

    service.placeOrder(order);

    verify(listener, atLeastOnce()).onTrade(trade);
  }
  @Test
  public void testShouldCancelWhenReceiveCancelOrder() throws CancelOrderException {
    Order order = orderGetTest(OrderType.BUY, 1, (float) 1.0, new Date());
    orderBook.placeOrder(order);
    responses = orderBook.fillOrders();

    orderBook.cancelOrder(order.getOrderID());

    // check
    try {
      orderBook.cancelOrder(order.getOrderID());
      fail();
    } catch (CancelOrderException e) {
      // ok
    }
  }