76 lines
2.6 KiB
Python
76 lines
2.6 KiB
Python
import unittest
|
|
|
|
from minecraft.networking.types import (
|
|
Enum, BitFieldEnum, Vector, Position, PositionAndLook
|
|
)
|
|
|
|
|
|
class EnumTest(unittest.TestCase):
|
|
def test_enum(self):
|
|
class Example(Enum):
|
|
ONE = 1
|
|
TWO = 2
|
|
THREE = 3
|
|
|
|
self.assertEqual(
|
|
list(map(Example.name_from_value, range(5))),
|
|
[None, 'ONE', 'TWO', 'THREE', None])
|
|
|
|
|
|
class BitFieldEnumTest(unittest.TestCase):
|
|
def test_name_from_value(self):
|
|
class Example1(BitFieldEnum):
|
|
ONE = 1
|
|
TWO = 2
|
|
FOUR = 4
|
|
ALL = 7
|
|
NONE = 0
|
|
|
|
self.assertEqual(
|
|
list(map(Example1.name_from_value, range(9))),
|
|
['NONE', 'ONE', 'TWO', 'ONE|TWO', 'FOUR',
|
|
'ONE|FOUR', 'TWO|FOUR', 'ALL', None])
|
|
|
|
class Example2(BitFieldEnum):
|
|
ONE = 1
|
|
TWO = 2
|
|
FOUR = 4
|
|
|
|
self.assertEqual(
|
|
list(map(Example2.name_from_value, range(9))),
|
|
['0', 'ONE', 'TWO', 'ONE|TWO', 'FOUR',
|
|
'ONE|FOUR', 'TWO|FOUR', 'ONE|TWO|FOUR', None])
|
|
|
|
|
|
class VectorTest(unittest.TestCase):
|
|
def test_operators(self):
|
|
self.assertEqual(Vector(1, -2, 0) + Vector(0, 1, 2), Vector(1, -1, 2))
|
|
self.assertEqual(Vector(1, -2, 0) - Vector(0, 1, 2), Vector(1, -3, -2))
|
|
self.assertEqual(-Vector(1, -2, 0), Vector(-1, 2, 0))
|
|
self.assertEqual(Vector(1, -2, 0) * 2, Vector(2, -4, 0))
|
|
self.assertEqual(2 * Vector(1, -2, 0), Vector(2, -4, 0))
|
|
self.assertEqual(Vector(1, -2, 0) / 2, Vector(1/2, -2/2, 0/2))
|
|
self.assertEqual(Vector(1, -2, 0) // 2, Vector(0, -1, 0))
|
|
|
|
def test_repr(self):
|
|
self.assertEqual(str(Vector(1, 2, 3)), 'Vector(1, 2, 3)')
|
|
self.assertEqual(str(Position(1, 2, 3)), 'Position(1, 2, 3)')
|
|
|
|
|
|
class PositionAndLookTest(unittest.TestCase):
|
|
""" This also tests the MutableRecord base type. """
|
|
def test_properties(self):
|
|
pos_look_1 = PositionAndLook(position=(1, 2, 3), look=(4, 5))
|
|
pos_look_2 = PositionAndLook(x=1, y=2, z=3, yaw=4, pitch=5)
|
|
string_repr = 'PositionAndLook(x=1, y=2, z=3, yaw=4, pitch=5)'
|
|
|
|
self.assertEqual(pos_look_1, pos_look_2)
|
|
self.assertEqual(pos_look_1.position, pos_look_1.position)
|
|
self.assertEqual(pos_look_1.look, pos_look_2.look)
|
|
self.assertEqual(hash(pos_look_1), hash(pos_look_2))
|
|
self.assertEqual(str(pos_look_1), string_repr)
|
|
|
|
self.assertFalse(pos_look_1 != pos_look_2)
|
|
pos_look_1.position += Vector(1, 1, 1)
|
|
self.assertTrue(pos_look_1 != pos_look_2)
|