import unittest from munch import Munch from mosfet.info import blocks from mosfet.jobs.gather_crop import GatherCropStates class CropBatchTests(unittest.TestCase): def test_navigation_looks_at_the_crop_target(self): crop = (5, 64, 8) class FakeWorld: @staticmethod def path_to_place(_start, _target): return [(1, 64, 1), crop] g = Munch(world=FakeWorld(), pos=(1, 64, 1), path=[], look_at=None) state = GatherCropStates(g) state.crop = crop state.nav_to_crop() self.assertEqual(g.look_at, crop) self.assertEqual(g.path[-1], crop) def test_gather_crop_finishes_after_sixteen_successful_replants(self): unripe_wheat = blocks.MCD_BLOCKS['wheat']['minStateId'] mature_wheat = blocks.MATURE_WHEAT_ID self.assertNotEqual(unripe_wheat, mature_wheat) class FakeWorld: @staticmethod def block_at(*_position): return unripe_wheat state = GatherCropStates(Munch(world=FakeWorld())) state.crop = (1, 64, 1) state.type_id = mature_wheat for completed in range(1, state.CROPS_PER_BATCH): state.wait_place() self.assertEqual(state.completed_crops, completed) self.assertIs(state.state.__func__, state.find_new_crop.__func__) state.state = state.wait_place state.wait_place() self.assertEqual(state.completed_crops, 0) self.assertIs(state.state.__func__, state.cleanup.__func__) if __name__ == '__main__': unittest.main()