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()); }
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); }
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); }
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; }
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)); }
virtual Bid yourTurnToBid(const Bidding*) { return Bid(); }
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; } }