Ejemplo n.º 1
0
  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])
Ejemplo n.º 2
0
  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)
Ejemplo n.º 3
0
  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))