public void CannotSellTwice() { RoleOwner.Goods.Add(new Coffee()); RoleOwner.Goods.Add(new Sugar()); ReselectRole(); var action = new SellGood { GoodType = GoodType.Coffee }; CanExecuteActionOnce(action, RoleOwner); }
public void CanUsePrivilege() { RoleOwner.Goods.Add(new Coffee()); ReselectRole(); var action = new SellGood { GoodType = GoodType.Coffee }; CanExecuteActionOnce(action, RoleOwner); Assert.Equal(DoubloonsOnRole + 5, RoleOwner.Doubloons); }
private void ExecuteSellGood(SellGood sellGood, IPlayer player) { if (!_tradeHouse.CanBeSoldBy(sellGood.GoodType, player)) { throw new GameException($"{sellGood.GoodType} cannot be sold"); } var good = player.Goods.First(g => g.Type == sellGood.GoodType); player.Goods.Remove(good); var income = _tradeHouse.Sell(good); player.Doubloons += income + CalculateIncomeBonusFor(player); SetPlayerPhase(player, EndedPhase); }
public void SameGoodCannotBeSold() { var player = GetPlayerWithoutPrivilege(); RoleOwner.Goods.Add(new Coffee()); player.Goods.Add(new Coffee()); player.Goods.Add(new Tobacco()); ReselectRole(); var action = new SellGood { GoodType = GoodType.Coffee }; CanExecuteActionOnce(action, RoleOwner); Assert.Throws <GameException>(() => CanExecuteActionOnce(action, player)); Assert.Equal(0, player.Doubloons); }
public void CanUseSmallMarket() { var player = GetPlayerWithoutPrivilege(); player.Goods.Add(new Coffee()); var smallMarket = new SmallMarket(); smallMarket.AddWorker(new Colonist()); player.Build(smallMarket); ReselectRole(); var action = new SellGood { GoodType = GoodType.Coffee }; CanExecuteActionOnce(action, player); Assert.Equal(5, player.Doubloons); }
public void CanUseOffice() { var player = GetPlayerWithoutPrivilege(); RoleOwner.Goods.Add(new Coffee()); player.Goods.Add(new Coffee()); ReselectRole(); var office = new Office(); office.AddWorker(new Colonist()); player.Build(office); var action = new SellGood { GoodType = GoodType.Coffee }; CanExecuteActionOnce(action, RoleOwner); CanExecuteActionOnce(action, player); Assert.Equal(4, player.Doubloons); }
public void CanCombinePrivilegeAndSmallMarketAndLargeMarket() { var player = RoleOwner; player.Goods.Add(new Coffee()); var largeMarket = new LargeMarket(); largeMarket.AddWorker(new Colonist()); player.Build(largeMarket); var smallMarket = new SmallMarket(); smallMarket.AddWorker(new Colonist()); player.Build(smallMarket); ReselectRole(); var action = new SellGood { GoodType = GoodType.Coffee }; CanExecuteActionOnce(action, player); Assert.Equal(DoubloonsOnRole + 8, player.Doubloons); }