Skip to content

Commit

Permalink
the sniper wins
Browse files Browse the repository at this point in the history
  • Loading branch information
lvguowei committed Feb 24, 2018
1 parent 44073ae commit c3976c7
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 13 deletions.
24 changes: 14 additions & 10 deletions src/main/java/com/guowei/lv/AuctionSniper.java
Expand Up @@ -6,27 +6,31 @@ public class AuctionSniper implements AuctionEventListener {

private Auction auction;

private boolean isWinning = false;

public AuctionSniper(Auction auction, SniperListener listener) {
this.sniperListener = listener;
this.auction = auction;
}

@Override
public void auctionClosed() {
sniperListener.sniperLost();
if (isWinning) {
sniperListener.sniperWon();
} else {
sniperListener.sniperLost();
}
}

@Override
public void currentPrice(int price, int increment, PriceSource priceSource) {
switch (priceSource) {
case FromOtherBidder:
auction.bid(price + increment);
sniperListener.sniperBidding();
break;
case FromSniper:
sniperListener.sniperWinning();
break;
}
isWinning = priceSource == PriceSource.FromSniper;

if (isWinning) {
sniperListener.sniperWinning();
} else {
auction.bid(price + increment);
sniperListener.sniperBidding();
}
}
}
9 changes: 6 additions & 3 deletions src/main/java/com/guowei/lv/Main.java
Expand Up @@ -8,9 +8,7 @@
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import static com.guowei.lv.MainWindow.STATUS_BIDDING;
import static com.guowei.lv.MainWindow.STATUS_LOST;
import static com.guowei.lv.MainWindow.STATUS_WINNING;
import static com.guowei.lv.MainWindow.*;

public class Main {
private static final int ARG_HOSTNAME = 0;
Expand Down Expand Up @@ -97,6 +95,11 @@ public void sniperWinning() {
showStatus(STATUS_WINNING);
}

@Override
public void sniperWon() {
showStatus(STATUS_WON);
}

private void showStatus(final String status) {
SwingUtilities.invokeLater(() -> ui.showStatus(status));
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/guowei/lv/SniperListener.java
Expand Up @@ -8,4 +8,6 @@ public interface SniperListener extends EventListener {
void sniperBidding();

void sniperWinning();

void sniperWon();
}
15 changes: 15 additions & 0 deletions src/test/java/com/guowei/lv/AuctionSniperTest.java
Expand Up @@ -62,4 +62,19 @@ public void reportsIsWinningWhenCurrentPriceComesFromSniper() {

sniper.currentPrice(123, 45, FromSniper);
}

@Test
public void reportsWonIfAuctionClosesWhenWinning() {
context.checking(new Expectations() {{
ignoring(auction);
allowing(sniperListener).sniperWinning();
then(sniperState.is("winning"));

atLeast(1).of(sniperListener).sniperWon();
when(sniperState.is("winning"));
}});

sniper.currentPrice(123, 45, FromSniper);
sniper.auctionClosed();
}
}

0 comments on commit c3976c7

Please sign in to comment.