From ae5f073996625779d191002c94d6e2e608afe35a Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sun, 18 Jan 2015 19:20:29 +0000
Subject: [PATCH] Major refactoring work to minimize tables in BridgeCompute class.

---
 app/src/androidTest/java/net/jacekk/bridge/BridgeComputeTest.java |  110 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 106 insertions(+), 4 deletions(-)

diff --git a/app/src/androidTest/java/net/jacekk/bridge/BridgeComputeTest.java b/app/src/androidTest/java/net/jacekk/bridge/BridgeComputeTest.java
index f283084..d5f952d 100644
--- a/app/src/androidTest/java/net/jacekk/bridge/BridgeComputeTest.java
+++ b/app/src/androidTest/java/net/jacekk/bridge/BridgeComputeTest.java
@@ -1,7 +1,109 @@
 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);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 }

--
Gitblit v1.9.1