From 56be1355325c2969e271cee19b7cf5b684e75a06 Mon Sep 17 00:00:00 2001 From: poixen Date: Fri, 20 Nov 2015 17:22:48 +0100 Subject: [PATCH] Removed minus subtraction limits + Removed minus subtraction limits to allow other areas of code to work --- .../java/org/mage/test/mana/ManaTest.java | 27 ++++------- Mage/src/mage/Mana.java | 45 ++++++------------- 2 files changed, 23 insertions(+), 49 deletions(-) diff --git a/Mage.Tests/src/test/java/org/mage/test/mana/ManaTest.java b/Mage.Tests/src/test/java/org/mage/test/mana/ManaTest.java index 6d31cb52bc7..28c03a91a94 100644 --- a/Mage.Tests/src/test/java/org/mage/test/mana/ManaTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/mana/ManaTest.java @@ -1,5 +1,6 @@ package org.mage.test.mana; +import junit.framework.Assert; import mage.Mana; import mage.constants.ColoredManaSymbol; import mage.constants.ManaType; @@ -431,26 +432,10 @@ public class ManaTest { assertEquals(1, thisMana.getAny()); } - @Test - public void shouldNotSubtractLessThan0() { - // given - expectedException.expect(ArithmeticException.class); - expectedException.expectMessage("You can not subtract below 0"); - Mana thisMana = new Mana(2, 2, 2, 2, 2, 2, 2); - Mana thatMana = new Mana(10, 1, 1, 1, 10, 1, 1); - - // when - thisMana.subtract(thatMana); - - // then - } - @Test - public void shouldNotAllowMinusSubtractionCost() { + public void shouldSubtractCost() { // given - expectedException.expect(ArithmeticException.class); - expectedException.expectMessage("You can not subtract below 0"); Mana thisMana = new Mana(2, 2, 2, 2, 2, 2, 2); Mana thatMana = new Mana(10, 1, 1, 1, 10, 1, 1); @@ -458,7 +443,13 @@ public class ManaTest { thisMana.subtractCost(thatMana); // then - + assertEquals(-8, thisMana.getRed()); + assertEquals(1, thisMana.getGreen()); + assertEquals(1, thisMana.getBlue()); + assertEquals(1, thisMana.getWhite()); + assertEquals(-8, thisMana.getBlack()); + assertEquals(1, thisMana.getColorless()); + assertEquals(1, thisMana.getAny()); } diff --git a/Mage/src/mage/Mana.java b/Mage/src/mage/Mana.java index bccbdd7f846..461e41bf351 100644 --- a/Mage/src/mage/Mana.java +++ b/Mage/src/mage/Mana.java @@ -270,30 +270,13 @@ public class Mana implements Comparable, Serializable, Copyable { * @param mana mana values to subtract */ public void subtract(final Mana mana) throws ArithmeticException { - red = validateSubtraction(red, mana.red); - green = validateSubtraction(green, mana.green); - blue = validateSubtraction(blue, mana.blue); - white = validateSubtraction(white, mana.white); - black = validateSubtraction(black, mana.black); - colorless = validateSubtraction(colorless, mana.colorless); - any = validateSubtraction(any, mana.any); - } - - /** - * Ensures subtraction will not result in a negative number. - * - * @param lhs left hand side operand - * @param rhs right hand side operand - * @return returns the non-negative subtraction result - * @throws ArithmeticException thrown when the result of the subtraction - * is less than 0. - */ - private int validateSubtraction(final int lhs, final int rhs) throws ArithmeticException { - int result = lhs - rhs; - if (result < 0) { - throw new ArithmeticException("You can not subtract below 0"); - } - return result; + red -= mana.red; + green -= mana.green; + blue -= mana.blue; + white -= mana.white; + black -= mana.black; + colorless -= mana.colorless; + any -= mana.any; } @@ -308,13 +291,13 @@ public class Mana implements Comparable, Serializable, Copyable { * colored mana to make up the negative colorless cost */ public void subtractCost(final Mana mana) throws ArithmeticException { - red = validateSubtraction(red, mana.red); - green = validateSubtraction(green, mana.green); - blue = validateSubtraction(blue, mana.blue); - white = validateSubtraction(white, mana.white); - black = validateSubtraction(black, mana.black); - any = validateSubtraction(any, mana.any); - colorless -= mana.colorless; // can be minus, will use remaining mana to pay + red -= mana.red; + green -= mana.green; + blue -= mana.blue; + white -= mana.white; + black -= mana.black; + any -= mana.any; + colorless -= mana.colorless; while (colorless < 0) { int oldColorless = colorless;