def testActionInvest(self): b = Board() gc = GameController(b) p0, p1, p2, p3 = gc.players gc.actionInvest(p0, 0, [Resources.Red, Resources.Blue]) # p0: +1 R, +1 B with self.assertRaises(RuntimeError): gc.actionInvest(p1, 0, [Resources.Red, Resources.Blue]) gc.actionInvest(p2, 1, [Resources.Green]) # p2: +2 G with self.assertRaises(RuntimeError): gc.actionInvest(p2, 2, [Resources.Red, Resources.Blue]) gc.actionInvest(p0, 2, [Resources.Red]) # p0: +3 R with self.assertRaises(RuntimeError): gc.actionInvest(p2, 3, [Resources.Green]) gc.actionInvest(p3, 3, [Resources.Red, Resources.Blue]) # p3: +2 R, +2 B gc.actionInvest(p2, 4, [Resources.Red]) # p2: +4 R self.assertEqual([0, 2, 3], b.playerOrderOnFirmTrack(Resources.Red)) self.assertEqual({0: 4, 2: 4, 3: 2}, b.positionsOnFirmTrack(Resources.Red)) self.assertEqual([2], b.playerOrderOnFirmTrack(Resources.Green)) self.assertEqual({2: 2}, b.positionsOnFirmTrack(Resources.Green)) self.assertEqual([3, 0], b.playerOrderOnFirmTrack(Resources.Blue)) self.assertEqual({0: 1, 3: 2}, b.positionsOnFirmTrack(Resources.Blue)) gc.finalizeTurn() # Check order self.assertEqual([0, 2, 3, 1], [p.ident for p in gc.players])
def testActionGetMoneyOnGoods(self): b = Board() gc = GameController(b) # Doctor the board a little. for player in gc.players: player.amount = 0 b.revenues[Resources.Glass] = 13 p0, p1, p2, p3 = gc.players gc.actionGetMoneyOnGoods(p1, Resources.Glass) self.assertEqual(7, p1.amount) self.assertEqual(6, b.revenues[Resources.Glass]) self.assertEqual([], b.playerOrderOnFirmTrack(Resources.Red)) self.assertEqual([], b.playerOrderOnFirmTrack(Resources.Green)) self.assertEqual([1], b.playerOrderOnFirmTrack(Resources.Blue)) self.assertEqual({1: 1}, b.positionsOnFirmTrack(Resources.Blue))
def testActionGetCard(self): b = Board() gc = GameController(b) confidenceMarkerBefore = b.confidenceMarker # Doctor the board a little. for player in gc.players: player.amount = 0 b.cardStack = [ FactoryCard(Resources.Glass, 0, 1, 1), WorkforceCard(0, 1, 3), PlusLevelCard(1, 2, 0), LoanGoodsCard(Resources.Iron, 3, 0, -4), MoneyForLevelCard(3, 3, 0, 0), WorkforceCard(0, 1, 0), ActionCard(), UpgradeCard(2), LoanCard(10, 1, -5), LoanCard(8, 1, -3), LoanGoodsCard(Resources.Brick, 4, 0, -4)] b.prepareTurn() p0, p1, p2, p3 = gc.players gc.actionGetCard(p0, 2) # Advances p0 on blue firm track. self.assertIn(PlusLevelCard(1, 2, 0), p0.cards) self.assertEqual([], b.playerOrderOnFirmTrack(Resources.Red)) self.assertEqual([], b.playerOrderOnFirmTrack(Resources.Green)) self.assertEqual([0], b.playerOrderOnFirmTrack(Resources.Blue)) self.assertEqual({0: 1}, b.positionsOnFirmTrack(Resources.Blue)) self.assertEqual(1, p0.getLevel()) self.assertEqual(confidenceMarkerBefore, b.confidenceMarker) gc.actionGetCard(p1, 2) # Does not advance on any track. self.assertIn(LoanGoodsCard(Resources.Iron, 3, 0, -4), p1.cards) self.assertEqual([], b.playerOrderOnFirmTrack(Resources.Red)) self.assertEqual([], b.playerOrderOnFirmTrack(Resources.Green)) self.assertEqual([0], b.playerOrderOnFirmTrack(Resources.Blue)) self.assertEqual({0: 1}, b.positionsOnFirmTrack(Resources.Blue)) self.assertEqual(confidenceMarkerBefore - 1, b.confidenceMarker) gc.actionGetCard(p2, 0) # Advances p2 on red firm track. self.assertIn(FactoryCard(Resources.Glass, 0, 1, 1), p2.cards) self.assertEqual([2], b.playerOrderOnFirmTrack(Resources.Red)) self.assertEqual([], b.playerOrderOnFirmTrack(Resources.Green)) self.assertEqual([0], b.playerOrderOnFirmTrack(Resources.Blue)) self.assertEqual({0: 1}, b.positionsOnFirmTrack(Resources.Blue)) self.assertEqual({2: 1}, b.positionsOnFirmTrack(Resources.Red)) self.assertEqual(confidenceMarkerBefore - 1, b.confidenceMarker) gc.actionGetCard(p3, 5) # Does not advance on any track. self.assertIn(LoanCard(10, 1, -5), p3.cards) self.assertEqual([2], b.playerOrderOnFirmTrack(Resources.Red)) self.assertEqual([], b.playerOrderOnFirmTrack(Resources.Green)) self.assertEqual([0], b.playerOrderOnFirmTrack(Resources.Blue)) self.assertEqual({0: 1}, b.positionsOnFirmTrack(Resources.Blue)) self.assertEqual({2: 1}, b.positionsOnFirmTrack(Resources.Red)) self.assertEqual(confidenceMarkerBefore - 2, b.confidenceMarker)