Add a serialization test

This commit is contained in:
Ammar Askar 2015-04-03 08:04:59 +05:00
parent a073ee35d8
commit 08e126188a
3 changed files with 44 additions and 1 deletions

View File

@ -4,6 +4,7 @@ include requirements.txt
include tox.ini
include start.py
recursive-include tests *.py
recursive-include tests *.bin
recursive-include minecraft *.py
recursive-include docs *.rst
include docs/Makefile

View File

@ -104,7 +104,7 @@ class VarInt(Type):
@staticmethod
def send(value, socket):
out = ""
out = bytes()
while True:
byte = value & 0x7F
value >>= 7

View File

@ -0,0 +1,42 @@
import unittest
from minecraft.networking.types import (
Type, Boolean, UnsignedByte, Byte, Short, UnsignedShort,
Integer, VarInt, Long, Float, Double, ShortPrefixedByteArray,
VarIntPrefixedByteArray, String
)
from minecraft.networking.packets import PacketBuffer
TEST_DATA = {
Boolean: [True, False],
UnsignedByte: [0, 125],
Byte: [-22, 22],
Short: [-340, 22, 350],
UnsignedShort: [0, 400],
Integer: [-1000, 1000],
VarInt: [1, 250, 50000, 10000000],
Long: [50000000],
Float: [21.000301],
Double: [36.004002],
ShortPrefixedByteArray: [bytes(245)],
VarIntPrefixedByteArray: [bytes(1234)],
String: ["hello world"]
}
class SerializationTest(unittest.TestCase):
def test_serialization(self):
for data_type in Type.__subclasses__():
if data_type in TEST_DATA:
test_cases = TEST_DATA[data_type]
for test_data in test_cases:
packet_buffer = PacketBuffer()
data_type.send(test_data, packet_buffer)
packet_buffer.reset_cursor()
deserialized = data_type.read(packet_buffer)
if data_type is Float or data_type is Double:
self.assertAlmostEquals(test_data, deserialized, 3)
else:
self.assertEqual(test_data, deserialized)