| | |
| | | package net.jacekk.bridge; |
| | | |
| | | /** |
| | | * Created by jacek on 18.01.15. |
| | | */ |
| | | public class BridgeComputeTest { |
| | | import junit.framework.TestCase; |
| | | |
| | | public class BridgeComputeTest extends TestCase { |
| | | BridgeCompute compute = new BridgeCompute(); |
| | | BrydzLicz computeExpected = new BrydzLicz(); |
| | | |
| | | public void testGetIMPs() { |
| | | assertEquals(0, compute.getIMPs(0)); |
| | | assertEquals(0, compute.getIMPs(10)); |
| | | assertEquals(1, compute.getIMPs(20)); |
| | | assertEquals(1, compute.getIMPs(30)); |
| | | assertEquals(1, compute.getIMPs(40)); |
| | | assertEquals(2, compute.getIMPs(50)); |
| | | |
| | | assertEquals(23, compute.getIMPs(3999)); |
| | | assertEquals(24, compute.getIMPs(4000)); |
| | | assertEquals(24, compute.getIMPs(4001)); |
| | | } |
| | | |
| | | public void testGetPercent() { |
| | | assertEquals(50, compute.getPercent(20, 0, 0)); |
| | | assertEquals(44, compute.getPercent(21, 0, 0)); |
| | | } |
| | | |
| | | public void testGetResultForBasic() throws BridgeInputException { |
| | | BridgeInput input = new BridgeInput(); |
| | | input.bid = 0; |
| | | input.PC = 20; |
| | | input.weVulnerable = false; |
| | | input.theyVulnerable = false; |
| | | input.suit = BridgeInput.Suit.MINOR; |
| | | input.contract = BridgeInput.Contract.NORMAL; |
| | | BridgeResult result; |
| | | |
| | | result = compute.getResultForInput(input); |
| | | assertEquals(BridgeResult.Side.They, result.winners); |
| | | assertEquals(0, result.IMPs); |
| | | assertEquals(50, result.percent); |
| | | |
| | | input.PC = 21; |
| | | result = compute.getResultForInput(input); |
| | | assertEquals(BridgeResult.Side.They, result.winners); |
| | | assertEquals(2, result.IMPs); |
| | | assertEquals(56, result.percent); |
| | | |
| | | input.PC = 24; |
| | | result = compute.getResultForInput(input); |
| | | assertEquals(BridgeResult.Side.They, result.winners); |
| | | assertEquals(5, result.IMPs); |
| | | assertEquals(56, result.percent); |
| | | |
| | | input.PC = 25; |
| | | result = compute.getResultForInput(input); |
| | | assertEquals(BridgeResult.Side.They, result.winners); |
| | | assertEquals(7, result.IMPs); |
| | | assertEquals(74, result.percent); |
| | | } |
| | | |
| | | public void testGetResultForFull() throws BridgeInputException { |
| | | int contract; |
| | | int suit; |
| | | int game; |
| | | int vulnerability; |
| | | int PC; |
| | | int tricks; |
| | | BridgeInput input = new BridgeInput(); |
| | | BridgeResult result; |
| | | BrydzLicz.BrydzWynik expectedResult; |
| | | |
| | | for (contract = 0; contract <= 7; contract++) { |
| | | input.bid = contract; |
| | | for (suit = 0; suit <= 2; suit++) { |
| | | input.suit = BridgeInput.Suit.values()[suit]; |
| | | for (game = 0; game <= 2; game++) { |
| | | input.contract = BridgeInput.Contract.values()[game]; |
| | | for (vulnerability = 0; vulnerability <= 3; vulnerability++) { |
| | | input.weVulnerable = vulnerability / 2 >= 1; |
| | | input.theyVulnerable = vulnerability % 2 >= 1; |
| | | for (PC = 0; PC <= 40; PC++) { |
| | | input.PC = PC; |
| | | for (tricks = 0; tricks <= 13; tricks++) { |
| | | |
| | | input.tricks = tricks; |
| | | try { |
| | | result = compute.getResultForInput(input); |
| | | } catch (Exception e) { |
| | | if (contract > 0) { |
| | | throw e; |
| | | } |
| | | continue; |
| | | } |
| | | |
| | | expectedResult = computeExpected.policz(contract, suit, game, vulnerability, PC, tricks); |
| | | |
| | | assertEquals(input.toString(), expectedResult.dla, result.winners.ordinal()); |
| | | assertEquals(input.toString(), expectedResult.punkty_przed, result.pointsBefore); |
| | | assertEquals(input.toString(), expectedResult.punkty, result.points); |
| | | assertEquals(input.toString(), expectedResult.IMP, result.IMPs); |
| | | assertEquals(input.toString(), expectedResult.procent, result.percent); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |