small update
boss prototype, auto planter, visual reworks, bug fixes
This commit is contained in:
@@ -219,6 +219,8 @@ class AutoFarmerTest(unittest.TestCase):
|
||||
data["fertilizer"] = 10
|
||||
data["coins"] = 100
|
||||
data["auto_farmer"] = False
|
||||
data["auto_planter"] = False
|
||||
data["auto_planter_active"] = False
|
||||
collection.save(data)
|
||||
|
||||
def _stalled_plot(self):
|
||||
@@ -308,6 +310,100 @@ class AutoFarmerTest(unittest.TestCase):
|
||||
self.assertEqual(len(state["seeds"]), 1) # seed not planted
|
||||
self.assertEqual(state["plots"][0]["stage"], 1) # stalled plot advanced
|
||||
|
||||
def test_buy_auto_planter(self):
|
||||
data = collection.load()
|
||||
data["coins"] = 300
|
||||
collection.save(data)
|
||||
self.assertEqual(collection.buy_auto_planter(), "")
|
||||
self.assertTrue(collection.auto_planter_owned())
|
||||
self.assertTrue(collection.auto_planter_active())
|
||||
self.assertEqual(collection.available_coins(), 100)
|
||||
self.assertNotEqual(collection.buy_auto_planter(), "") # already owned
|
||||
|
||||
def test_buy_auto_planter_requires_coins(self):
|
||||
data = collection.load()
|
||||
data["coins"] = 50
|
||||
collection.save(data)
|
||||
self.assertNotEqual(collection.buy_auto_planter(), "")
|
||||
self.assertFalse(collection.auto_planter_owned())
|
||||
|
||||
def test_toggle_auto_planter(self):
|
||||
data = collection.load()
|
||||
data["coins"] = 300
|
||||
collection.save(data)
|
||||
collection.buy_auto_planter()
|
||||
self.assertFalse(collection.toggle_auto_planter()) # turned off
|
||||
self.assertFalse(collection.auto_planter_active())
|
||||
self.assertTrue(collection.toggle_auto_planter()) # back on
|
||||
|
||||
def test_auto_plant_plants_seed_into_empty_plot(self):
|
||||
data = collection.load()
|
||||
data["coins"] = 300
|
||||
data["soil"]["seeds"] = [{"plant": "Rose"}, {"plant": "Lavender"}]
|
||||
collection.save(data)
|
||||
self.assertEqual(collection.buy_auto_planter(), "")
|
||||
self.assertEqual(collection.auto_plant(), "")
|
||||
state = collection.soil_state()
|
||||
self.assertEqual(len(state["plots"]), 1)
|
||||
self.assertEqual(state["plots"][0]["plant"], "Rose") # first seed planted
|
||||
self.assertEqual(len(state["seeds"]), 1)
|
||||
|
||||
def test_auto_plant_respects_toggle_and_requirements(self):
|
||||
data = collection.load()
|
||||
data["coins"] = 300
|
||||
data["soil"]["seeds"] = [{"plant": "Rose"}]
|
||||
collection.save(data)
|
||||
self.assertEqual(collection.auto_plant(), "No auto planter") # not owned
|
||||
collection.buy_auto_planter()
|
||||
collection.toggle_auto_planter() # turn off
|
||||
self.assertEqual(collection.auto_plant(), "Auto planter off")
|
||||
collection.toggle_auto_planter()
|
||||
data = collection.load()
|
||||
data["soil"]["seeds"] = []
|
||||
collection.save(data)
|
||||
self.assertEqual(collection.auto_plant(), "") # nothing to plant -> idle
|
||||
self.assertEqual(len(collection.soil_state()["plots"]), 0)
|
||||
|
||||
def test_auto_plant_wont_overfill_plots(self):
|
||||
data = collection.load()
|
||||
data["coins"] = 300
|
||||
data["soil"]["seeds"] = [{"plant": "Rose"}, {"plant": "Lavender"}]
|
||||
data["soil"]["plots"] = [{"plant": "Rose", "stage_started_at": 0, "stage": 0, "water": 0}]
|
||||
collection.save(data)
|
||||
self.assertEqual(collection.buy_auto_planter(), "")
|
||||
self.assertEqual(collection.auto_plant(), "") # no free plot -> idle
|
||||
self.assertEqual(len(collection.soil_state()["plots"]), 1)
|
||||
|
||||
|
||||
class PackShopTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
data = collection.load()
|
||||
data["coins"] = 500
|
||||
data["packs"] = {t: 0 for t in collection.PACK_TYPES}
|
||||
collection.save(data)
|
||||
|
||||
def test_buy_lesser_and_general(self):
|
||||
self.assertEqual(collection.buy_pack("lesser"), "")
|
||||
self.assertEqual(collection.buy_pack("general"), "")
|
||||
self.assertEqual(collection.buy_pack("garden"), "")
|
||||
self.assertEqual(collection.available_coins(), 500 - 50 - 100 - 100)
|
||||
packs = collection.pack_counts()
|
||||
self.assertEqual(packs["lesser"], 1)
|
||||
self.assertEqual(packs["general"], 1)
|
||||
self.assertEqual(packs["garden"], 1)
|
||||
|
||||
def test_tower_pack_cannot_be_bought(self):
|
||||
self.assertEqual(collection.buy_pack("tower"), "That pack can't be bought")
|
||||
self.assertEqual(collection.pack_counts().get("tower", 0), 0)
|
||||
self.assertEqual(collection.available_coins(), 500)
|
||||
|
||||
def test_buy_pack_requires_coins(self):
|
||||
data = collection.load()
|
||||
data["coins"] = 30
|
||||
collection.save(data)
|
||||
self.assertEqual(collection.buy_pack("lesser"), "Not enough coins")
|
||||
self.assertEqual(collection.pack_counts().get("lesser", 0), 0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user