Esempio n. 1
0
TEST (BidManagerTest, getPartnerSeatOfCurrentSeat)
{
    BidManager manager(EAST);
    EXPECT_EQ (WEST,     manager.getPartnerSeatOfCurrentSeat());
    manager.addBid(Bid(ONE_B, DIAMOND));
    EXPECT_EQ (NORTH,    manager.getPartnerSeatOfCurrentSeat());
    manager.addBid(PASS);
    EXPECT_EQ (EAST,     manager.getPartnerSeatOfCurrentSeat());
    manager.addBid(Bid(ONE_B, SPADE));
    EXPECT_EQ (SOUTH,    manager.getPartnerSeatOfCurrentSeat());
    manager.addBid(Bid(ONE_B, NO_TRUMP));
    EXPECT_EQ (WEST,     manager.getPartnerSeatOfCurrentSeat());
}
Esempio n. 2
0
TEST_F(ComputerFixture, bidWon) {
        Deal();
	Bidding bidding;
        ASSERT_NO_THROW(bidding.bid(this, Bid(Suit::CLUBS, 10)));
	EXPECT_EQ(lua_gettop(L), 0);

        ASSERT_NO_THROW(bidWon(&bidding, this));
	EXPECT_EQ(lua_gettop(L), 0);
}
Esempio n. 3
0
TEST (BidManagerTest, getLastPartnerBid_RegularBid)
{
    BidManager manager;
    manager.addBid(Bid(ONE_B, DIAMOND));
    manager.addBid(PASS);
    Bid bid = manager.getLastPartnerBid();

    EXPECT_EQ (bid.volume(), ONE_B);
    EXPECT_EQ (bid.suit(), DIAMOND);
}
Esempio n. 4
0
Bid SpecificBidAi::bid(Ai const& ai)
{
  Contracts const& contracts = ai.rules().contracts();
  if (ai.last_non_pass().is_pass() && bid_ < contracts.reserved_bids()) {
    return Bid(0);
  }
  if (bid_ >= ai.last_non_pass() &&
     (bid_ > ai.last_non_pass() || ai.position() == position_forehand)) {
    return bid_;
  }
  return Bid::pass;
}
Esempio n. 5
0
TEST (BidManagerTest, getFirstBid_EAST)
{
    BidManager manager(EAST);
    manager.addBid(Bid(ONE_B, DIAMOND));
    manager.addBid(PASS);
    manager.addBid(Bid(ONE_B, SPADE));
    manager.addBid(Bid(ONE_B, NO_TRUMP));
    
    EXPECT_EQ (Bid(ONE_B, DIAMOND),     manager.getFirstBid(EAST));
    EXPECT_EQ (Bid(PASS),               manager.getFirstBid(SOUTH));
    EXPECT_EQ (Bid(ONE_B, SPADE),       manager.getFirstBid(WEST));
    EXPECT_EQ (Bid(ONE_B, NO_TRUMP),    manager.getFirstBid(NORTH));
}
Esempio n. 6
0
 virtual Bid yourTurnToBid(const Bidding*) { return Bid(); }
Esempio n. 7
0
void TradingEngine::processNewRecord(Record::Ptr r) {

    if (r->type() == Record::Type::ENTER && (r->askId() == 6666 || r->bidId() == 6666)) {
        qDebug() << "Found one of our trades: " << r;
        Trade t(*r);
        t.setType(Record::Type::TRADE);
        t.setPrice(r->price());
        emit newTradeCreated(t);
        return;
    }

    switch (r->type()) {

    case Record::Type::ENTER:
        switch (r->bidOrAsk()) {
        case Record::BidAsk::Bid:
            enterBid(Bid(r));
            break;
        case Record::BidAsk::Ask:
            enterAsk(Ask(r));
            break;
        default:
            qWarning() << "encountered record with Type ENTER, but is neither a Bid nor Ask";
            break;
        }
        break;
    case Record::Type::DELETE:
        switch (r->bidOrAsk()) {
        case Record::BidAsk::Ask:
            removeAsk(Ask(r));
            break;
        case Record::BidAsk::Bid:
            removeBid(Bid(r));
            break;
        default:
            qWarning() << "trying to delete a record that is neither a Bid nor Ask";
            break;
        }
        break;
    case Record::Type::AMEND:
        switch (r->bidOrAsk()) {
        case Record::BidAsk::Ask:
            modifyAsk(Ask(r));
            break;
        case Record::BidAsk::Bid:
            modifyBid(Bid(r));
            break;
        default:
            qWarning() << "trying to amend a record that is neither a Bid nor Ask";
            break;
        }
        break;

    case Record::Type::TRADE:
//        createTrade(Trade(*r.data()));
        break;

    default:
        break;
    }
}