41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
import unittest
|
|
from munch import Munch
|
|
|
|
from minecraft.networking.modern import ClientTickEnd, UseItemOnBlockPacket
|
|
from mosfet.game import Game
|
|
from mosfet.protocol.modern import PlayerInputPacket
|
|
|
|
|
|
class FakeConnection:
|
|
def __init__(self):
|
|
self.packets = []
|
|
|
|
def write_packet(self, packet, force=False):
|
|
self.packets.append((packet, force))
|
|
|
|
|
|
class SneakPlacementTests(unittest.TestCase):
|
|
def test_sneaking_wraps_block_placement_and_is_released(self):
|
|
connection = FakeConnection()
|
|
game = Game.__new__(Game)
|
|
game.g = Munch(connection=connection)
|
|
game.sequence = 0
|
|
|
|
game.place_block((3, 64, 7), 1, sneaking=True)
|
|
|
|
packets = [packet for packet, _force in connection.packets]
|
|
self.assertEqual(len(packets), 6)
|
|
self.assertIsInstance(packets[0], PlayerInputPacket)
|
|
self.assertEqual(packets[0].flags, 0x20)
|
|
self.assertIsInstance(packets[1], ClientTickEnd)
|
|
self.assertIsInstance(packets[2], UseItemOnBlockPacket)
|
|
self.assertEqual(packets[2].location, (3, 64, 7))
|
|
self.assertIsInstance(packets[3], ClientTickEnd)
|
|
self.assertIsInstance(packets[4], PlayerInputPacket)
|
|
self.assertEqual(packets[4].flags, 0)
|
|
self.assertIsInstance(packets[5], ClientTickEnd)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|