From 341828878f789cb5b03210a35380dbb503da2cc8 Mon Sep 17 00:00:00 2001 From: Gavin Li Date: Thu, 19 Feb 2015 23:59:29 -0500 Subject: [PATCH] Updated TestPlayer --- MerchantRPGCSE2102/src/model/Item.java | 9 ++++++-- MerchantRPGCSE2102/src/model/Merchant.java | 2 +- MerchantRPGCSE2102/src/model/Player.java | 13 ++++++++++- MerchantRPGCSE2102/src/tests/TestPlayer.java | 23 ++++++++++++++++++++ 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/MerchantRPGCSE2102/src/model/Item.java b/MerchantRPGCSE2102/src/model/Item.java index 33b1a3e..0adaca9 100644 --- a/MerchantRPGCSE2102/src/model/Item.java +++ b/MerchantRPGCSE2102/src/model/Item.java @@ -27,6 +27,7 @@ public Item(String itemName, int basePrice, int quantity) // max and min price not specified _maxPrice = 100000; // default max price _minPrice = 0; // default min price + _adjustedPrice = _basePrice; _quantity = quantity; } @@ -65,14 +66,18 @@ public void increaseQuantity(int amount) * * @param amount is the amount that the item will be decreased by */ - public void decreaseQuantity(int amount) + public boolean decreaseQuantity(int amount) { if(amount > getQuantity()) { - System.out.println("Player does not have sufficient amount of" + getItemName()); + System.out.println("Player does not have sufficient amount of " + getItemName()); + return false; } else + { _quantity -= amount; + return true; + } } /** diff --git a/MerchantRPGCSE2102/src/model/Merchant.java b/MerchantRPGCSE2102/src/model/Merchant.java index b00dbf4..c692f17 100644 --- a/MerchantRPGCSE2102/src/model/Merchant.java +++ b/MerchantRPGCSE2102/src/model/Merchant.java @@ -192,7 +192,7 @@ public int getRandomPercent() } /** - * Returns the merchant's item inventorys + * Returns the merchant's item inventory * @return item inventory array */ public Item[] getInventory() diff --git a/MerchantRPGCSE2102/src/model/Player.java b/MerchantRPGCSE2102/src/model/Player.java index 5291f69..c3d8d0c 100644 --- a/MerchantRPGCSE2102/src/model/Player.java +++ b/MerchantRPGCSE2102/src/model/Player.java @@ -66,10 +66,21 @@ public void buy(String itemName, Merchant targetMerchant, int amount) * * @param itemName string containing the name of the item to be sold * @param targetMerchant the merchant who the player is selling to + * @param amount the amount of the item that the player is selling */ - public void sell(String itemName, Merchant targetMerchant) + public void sell(String itemName, Merchant targetMerchant, int amount) { + int totalPrice = targetMerchant.getItemPrice(itemName)* amount; //calculates the total price of the items + Item targetItem = getItem(itemName); + if(targetItem.decreaseQuantity(amount)) + { + increaseCash(totalPrice); + } + else + { + //loop back to Transaction Class + } } /** diff --git a/MerchantRPGCSE2102/src/tests/TestPlayer.java b/MerchantRPGCSE2102/src/tests/TestPlayer.java index 1f77d92..050891f 100644 --- a/MerchantRPGCSE2102/src/tests/TestPlayer.java +++ b/MerchantRPGCSE2102/src/tests/TestPlayer.java @@ -2,18 +2,21 @@ import controller.RPGame; import model.Item; +import model.Merchant; import model.Player; import junit.framework.TestCase; public class TestPlayer extends TestCase { private Player p; + private Merchant m; public void setup() { RPGame game = new RPGame(); //starting a new game game.inventoryFromFile(); //read from file p = new Player("TestPlayer", 1000, game.getPlayerInventoryList()); + m = new Merchant("TestMerchant1", 100000, game.getMerchantInventoryList(1)); } //test cash system for Player class @@ -33,4 +36,24 @@ public void testPlayerInventory() { System.out.println(item.getItemName() + " " + item.getQuantity()); } } + + public void testBuy() + { + setup(); + p.buy("water", m, 10); + assertEquals(970, p.getPlayerCash()); + assertEquals(10, p.getItem("water").getQuantity()); + } + + public void testSell() + { + setup(); + testBuy(); + p.sell("water", m, 11); + assertEquals(970, p.getPlayerCash()); + assertEquals(10, p.getItem("water").getQuantity()); + p.sell("water", m, 10); + assertEquals(1000, p.getPlayerCash()); + assertEquals(0, p.getItem("water").getQuantity()); + } }