pyCraft/tests/test_utility_types.py

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)