aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSkipper <[email protected]>2025-02-02 21:32:14 +0000
committerSkipper <[email protected]>2025-02-02 21:32:14 +0000
commitf2189b417b543bea5add24f5a324b328fa8dbfac (patch)
treef087daf2988ae32e03c9b7dea35b7c82aa0c10eb /tests
parentf40188672a49e1c6a85d0f5c6f47bda2fce75f1e (diff)
Writing tests, and checking against existing packet decoders
Diffstat (limited to 'tests')
-rw-r--r--tests/__init__.py0
-rw-r--r--tests/packet01_logon_test.py46
-rw-r--r--tests/packet04_loadfield_test.py38
-rw-r--r--tests/packet05_addobject_test.py39
-rw-r--r--tests/packet08_joinrequest_test.py31
-rw-r--r--tests/packet09_joinapproval_test.py26
6 files changed, 180 insertions, 0 deletions
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/__init__.py
diff --git a/tests/packet01_logon_test.py b/tests/packet01_logon_test.py
new file mode 100644
index 0000000..9650585
--- /dev/null
+++ b/tests/packet01_logon_test.py
@@ -0,0 +1,46 @@
+import unittest
+import sys
+import os
+
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
+from lib.PacketManager.packets.FSNETCMD_LOGON import FSNETCMD_LOGON
+
+class TestFSNETCMD_LOGON(unittest.TestCase):
+
+ def test_decode(self):
+ buffer = b'\x01\x00\x00\x00User1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99x3\x01'
+ packet = FSNETCMD_LOGON(buffer)
+ self.assertEqual(packet.username, 'User1')
+ self.assertEqual(packet.version, 20150425)
+ self.assertEqual(packet.alias, 'User1')
+
+ def test_decode_with_alias(self):
+ buffer = b'\x01\x00\x00\x00ExtraLongUserna\x00\x99x3\x01ExtraLongUsernameThatIsTooLongForYS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+ packet = FSNETCMD_LOGON(buffer)
+ self.assertEqual(packet.username, 'ExtraLongUserna')
+ self.assertEqual(packet.version, 20150425)
+ self.assertEqual(packet.alias, 'ExtraLongUsernameThatIsTooLongForYS')
+
+ def test_encode(self):
+ username = "User1"
+ version = 20150425
+ buffer = FSNETCMD_LOGON.encode(username, version)
+ expected_buffer = b'\x01\x00\x00\x00User1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99x3\x01'
+ self.assertEqual(buffer, expected_buffer)
+
+ def test_encode_with_alias(self):
+ username = "ExtraLongUsernameThatIsTooLongForYS"
+ version = 20150425
+ buffer = FSNETCMD_LOGON.encode(username, version)
+ expected_buffer = b'\x01\x00\x00\x00ExtraLongUserna\x00\x99x3\x01ExtraLongUsernameThatIsTooLongForYS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+ self.assertEqual(buffer, expected_buffer)
+
+ def test_encode_with_size(self):
+ username = "User1"
+ version = 20150425
+ buffer = FSNETCMD_LOGON.encode(username, version, with_size=True)
+ expected_buffer = b'\x18\x00\x00\x00\x01\x00\x00\x00User1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99x3\x01'
+ self.assertEqual(buffer, expected_buffer)
+
+if __name__ == '__main__':
+ unittest.main() \ No newline at end of file
diff --git a/tests/packet04_loadfield_test.py b/tests/packet04_loadfield_test.py
new file mode 100644
index 0000000..a9004be
--- /dev/null
+++ b/tests/packet04_loadfield_test.py
@@ -0,0 +1,38 @@
+import unittest
+import sys
+import os
+
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
+from lib.PacketManager.packets.FSNETCMD_LOADFIELD import FSNETCMD_LOADFIELD
+from struct import pack
+
+class TestFSNETCMD_LOADFIELD(unittest.TestCase):
+
+ def test_decode(self):
+ buffer = b'\x04\x00\x00\x00ISLAND_GOURD\x00\xc39\x00\xe0\x1ff\x00\r\x00\x00\x00\r\x00\x00\x00\x10\xc49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+ packet = FSNETCMD_LOADFIELD(buffer)
+ self.assertEqual(packet.fieldShortName, 'ISLAND_GOURD')
+ self.assertEqual(packet.flags, 0)
+ self.assertEqual(packet.pos, [0, 0, 0])
+ self.assertEqual(packet.atti, [0, 0,0])
+
+ def test_encode(self):
+ field = b'ISLAND_GOURD\x00\xc39\x00\xe0\x1ff\x00\r\x00\x00\x00\r\x00\x00\x00\x10\xc49\x00'
+ flags = 0
+ pos = [0, 0, 0]
+ atti = [0, 0, 0]
+ buffer = FSNETCMD_LOADFIELD.encode(field, flags, pos, atti)
+ expected_buffer = b'\x04\x00\x00\x00ISLAND_GOURD\x00\xc39\x00\xe0\x1ff\x00\r\x00\x00\x00\r\x00\x00\x00\x10\xc49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+ self.assertEqual(buffer, expected_buffer)
+
+ def test_encode_with_size(self):
+ field = b'ISLAND_GOURD\x00\xc39\x00\xe0\x1ff\x00\r\x00\x00\x00\r\x00\x00\x00\x10\xc49\x00'
+ flags = 0
+ pos = [0, 0, 0]
+ atti = [0, 0, 0]
+ buffer = FSNETCMD_LOADFIELD.encode(field, flags, pos, atti, with_size=True)
+ expected_buffer = b'@\x00\x00\x00\x04\x00\x00\x00ISLAND_GOURD\x00\xc39\x00\xe0\x1ff\x00\r\x00\x00\x00\r\x00\x00\x00\x10\xc49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+ self.assertEqual(buffer, expected_buffer)
+
+if __name__ == '__main__':
+ unittest.main() \ No newline at end of file
diff --git a/tests/packet05_addobject_test.py b/tests/packet05_addobject_test.py
new file mode 100644
index 0000000..6378858
--- /dev/null
+++ b/tests/packet05_addobject_test.py
@@ -0,0 +1,39 @@
+import unittest
+import sys
+import os
+
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
+from lib.PacketManager.packets.FSNETCMD_ADDOBJECT import FSNETCMD_ADDOBJECT
+
+class TestFSNETCMD_ADDOBJECT(unittest.TestCase):
+
+ def test_decode(self):
+ buffer = b'\x05\x00\x00\x00\x01\x00\x01\x00\x02\x00\x01\x00\x00\x00\x00\x00R\x0c^E\x00\x00\x00\x00H\x85%E\x1d\x96\xcb\xbf\x00\x00\x00\x00\x00\x00\x00\x80HANGER\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\xd7\xa3dB'
+
+ packet = FSNETCMD_ADDOBJECT(buffer)
+ self.assertEqual(packet.object_type, 1)
+ self.assertEqual(packet.net_type, 1)
+ self.assertEqual(packet.object_id, 65538)
+ self.assertEqual(packet.iff, 0)
+ self.assertEqual(packet.pos, [3552.77001953125, 0.0, 2648.330078125])
+ self.assertEqual(packet.atti, [-1.590518593788147, 0.0, -0.0])
+ self.assertEqual(packet.identifier, 'HANGER')
+ self.assertEqual(packet.substrname, '')
+ self.assertEqual(packet.ysfid, 0)
+ self.assertEqual(packet.flags, 0)
+ self.assertEqual(packet.flags0, 32768)
+ self.assertEqual(packet.outsideRadius, 57.15999984741211)
+
+ def test_encode(self):
+ buffer = FSNETCMD_ADDOBJECT.encode(
+ object_type=1, net_type=1, object_id=65538, iff=0, pos=[3552.77001953125, 0.0, 2648.330078125],
+ atti=[-1.590518593788147, 0.0, -0.0], identifier='HANGER', substrname='', ysfid=0,
+ flags=0, flags0=32768, outside_radius=57.15999984741211
+ )
+ expected_buffer = b'\x05\x00\x00\x00\x01\x00\x01\x00\x02\x00\x01\x00\x00\x00\x00\x00R\x0c^E\x00\x00\x00\x00H\x85%E\x1d\x96\xcb\xbf\x00\x00\x00\x00\x00\x00\x00\x80HANGER\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\xd7\xa3dB'
+ self.assertEqual(buffer, expected_buffer)
+
+
+
+if __name__ == '__main__':
+ unittest.main() \ No newline at end of file
diff --git a/tests/packet08_joinrequest_test.py b/tests/packet08_joinrequest_test.py
new file mode 100644
index 0000000..e712989
--- /dev/null
+++ b/tests/packet08_joinrequest_test.py
@@ -0,0 +1,31 @@
+import unittest
+import sys
+import os
+
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
+from lib.PacketManager.packets.FSNETCMD_JOINREQUEST import FSNETCMD_JOINREQUEST
+
+class TestFSNETCMD_JOINREQUEST(unittest.TestCase):
+
+ def test_decode(self):
+ buffer = b'\x08\x00\x00\x00\x02\x00\x00\x00EUROFIGHTER_TYPHOON\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00RW36_01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00K\x00\x00\x00'
+ packet = FSNETCMD_JOINREQUEST(buffer)
+ self.assertEqual(packet.iff,2)
+ self.assertEqual(packet.aircraft, 'EUROFIGHTER_TYPHOON')
+ self.assertEqual(packet.start_pos, 'RW36_01')
+ self.assertEqual(packet.fuel, 75)
+ self.assertEqual(packet.smoke,0)
+
+ def test_encode(self):
+ iff = 2
+ aircraft = 'EUROFIGHTER_TYPHOON'
+ start_pos = 'NORTH10000_01'
+ fuel = 75
+ smoke = 0
+ buffer = FSNETCMD_JOINREQUEST.encode(iff, aircraft, start_pos, fuel, smoke)
+ expected_buffer = b'\x08\x00\x00\x00\x02\x00\x00\x00EUROFIGHTER_TYPHOON\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00NORTH10000_01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00K\x00\x00\x00'
+ self.assertEqual(buffer, expected_buffer)
+
+
+if __name__ == '__main__':
+ unittest.main() \ No newline at end of file
diff --git a/tests/packet09_joinapproval_test.py b/tests/packet09_joinapproval_test.py
new file mode 100644
index 0000000..6334f78
--- /dev/null
+++ b/tests/packet09_joinapproval_test.py
@@ -0,0 +1,26 @@
+import unittest
+import sys
+import os
+
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
+from lib.PacketManager.packets.FSNETCMD_JOINAPPROVAL import FSNETCMD_JOINAPPROVAL
+
+class TestFSNETCMD_JOINAPPROVAL(unittest.TestCase):
+
+ def test_decode(self):
+ buffer = b'\t\x00\x00\x00'
+ packet = FSNETCMD_JOINAPPROVAL(buffer)
+ self.assertEqual(packet.buffer, buffer)
+
+ def test_encode(self):
+ buffer = FSNETCMD_JOINAPPROVAL.encode()
+ expected_buffer = b'\t\x00\x00\x00'
+ self.assertEqual(buffer, expected_buffer)
+
+ def test_encode_with_size(self):
+ buffer = FSNETCMD_JOINAPPROVAL.encode(with_size=True)
+ expected_buffer = b'\x04\x00\x00\x00\t\x00\x00\x00'
+ self.assertEqual(buffer, expected_buffer)
+
+if __name__ == '__main__':
+ unittest.main() \ No newline at end of file