Track protocol 777 health and hunger
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import io
|
||||
import struct
|
||||
import unittest
|
||||
|
||||
from munch import Munch
|
||||
|
||||
from mosfet.game import Game
|
||||
from mosfet.protocol.packets import SetHealthPacket
|
||||
|
||||
|
||||
class TestSetHealthPacket(unittest.TestCase):
|
||||
def test_protocol_777_packet_decodes_all_status_values(self):
|
||||
payload = struct.pack('>f', 13.5) + bytes([14]) + struct.pack('>f', 5.25)
|
||||
packet = SetHealthPacket()
|
||||
packet.read(io.BytesIO(payload))
|
||||
|
||||
self.assertEqual(packet.id, 0x6A)
|
||||
self.assertEqual(packet.health, 13.5)
|
||||
self.assertEqual(packet.food, 14)
|
||||
self.assertEqual(packet.food_saturation, 5.25)
|
||||
|
||||
def test_game_state_tracks_health_hunger_and_saturation(self):
|
||||
game = Game.__new__(Game)
|
||||
game.g = Munch()
|
||||
game.handle_set_health(SetHealthPacket(
|
||||
health=7.5, food=9, food_saturation=2.25))
|
||||
|
||||
self.assertEqual(game.g.health, 7.5)
|
||||
self.assertEqual(game.g.food, 9)
|
||||
self.assertEqual(game.g.hunger, 9)
|
||||
self.assertEqual(game.g.food_saturation, 2.25)
|
||||
self.assertEqual(game.g.saturation, 2.25)
|
||||
self.assertTrue(game.g.health_update_received)
|
||||
self.assertFalse(game.g.dead)
|
||||
|
||||
def test_zero_health_marks_bot_dead_without_faking_values(self):
|
||||
game = Game.__new__(Game)
|
||||
game.g = Munch()
|
||||
game.handle_set_health(SetHealthPacket(
|
||||
health=0.0, food=0, food_saturation=0.0))
|
||||
|
||||
self.assertEqual(game.g.health, 0.0)
|
||||
self.assertEqual(game.g.food, 0)
|
||||
self.assertTrue(game.g.dead)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user