diff --git a/tests/voice/test_voice.py b/tests/voice/test_voice.py index 75a05e5..e059ce4 100644 --- a/tests/voice/test_voice.py +++ b/tests/voice/test_voice.py @@ -4,6 +4,7 @@ import asyncio import unittest from unittest import mock +from hippolyzer.lib.base.datatypes import Vector3 from hippolyzer.lib.voice.client import VoiceClient from hippolyzer.lib.voice.connection import VivoxConnection @@ -160,6 +161,7 @@ class TestVoiceClient(unittest.IsolatedAsyncioTestCase): "ReturnCode": 0, "Results": {} }) + return msg async def _serve_connector_setup(self): await self.server_connection.send_event( @@ -207,42 +209,32 @@ class TestVoiceClient(unittest.IsolatedAsyncioTestCase): }) await self.client.ready.wait() - async def _serve_login(self): - msg = await self._expect_message("Account.Login.1") - self.assertEqual("foo", msg.data["AccountName"]) - await self.server_connection.send_event("AccountLoginStateChangeEvent", { - "AccountHandle": 2, - "StatusCode": 200, - "StatusString": "OK", - "State": 1, - }) - await self.server_connection.send_response(msg.request_id, msg.name, { - "ReturnCode": 0, - "Results": { - "StatusCode": 0, - "StatusString": None, + async def _do_login(self): + async def _serve_login(): + msg = await self._expect_message("Account.Login.1") + self.assertEqual("foo", msg.data["AccountName"]) + await self.server_connection.send_event("AccountLoginStateChangeEvent", { "AccountHandle": 2, - "DisplayName": "foo", - } - }) + "StatusCode": 200, + "StatusString": "OK", + "State": 1, + }) + await self.server_connection.send_response(msg.request_id, msg.name, { + "ReturnCode": 0, + "Results": { + "StatusCode": 0, + "StatusString": None, + "AccountHandle": 2, + "DisplayName": "foo", + } + }) - async def test_create_connector(self): - await self._serve_connector_setup() - - async def test_login(self): - await self._serve_connector_setup() - login_task = asyncio.create_task(self._serve_login()) - - await asyncio.wait_for(self.client.login("foo", "bar"), 0.5) - await asyncio.wait_for(login_task, 0.5) - - async def test_create_session(self): - await self._serve_connector_setup() - login_task = asyncio.create_task(self._serve_login()) + login_task = asyncio.create_task(_serve_login()) await asyncio.wait_for(self.client.login("foo", "bar"), 0.5) await asyncio.wait_for(login_task, 0.5) + async def _join_session(self): async def _serve_session(): await self._handle_message("Session.Create.1") await self.server_connection.send_event("SessionAddedEvent", { @@ -255,7 +247,38 @@ class TestVoiceClient(unittest.IsolatedAsyncioTestCase): serve_session_task = asyncio.create_task(_serve_session()) - await self.client.join_session("uri:foo@bar", region_handle=0) + await self.client.join_session("uri:foo@bar", region_handle=256) self.assertIn("uri:baz@foo", self.client.participants) await serve_session_task + + async def test_create_connector(self): + await self._serve_connector_setup() + + async def test_login(self): + await self._serve_connector_setup() + await self._do_login() + + async def test_create_session(self): + await self._serve_connector_setup() + await self._do_login() + await self._join_session() + + async def test_set_position(self): + await self._serve_connector_setup() + await self._do_login() + await self._join_session() + handle_3d_pos_task = asyncio.create_task(self._handle_message("Session.Set3DPosition.1")) + await self.client.set_region_3d_position(Vector3(1, 2, 3)) + msg = await handle_3d_pos_task + self.assertDictEqual( + {'X': '1.0', 'Y': '3.0', 'Z': '-258.0'}, + msg.data["SpeakerPosition"]["Position"], + ) + self.assertAlmostEqual(self.client.region_pos.X, 1.0) + self.assertAlmostEqual(self.client.region_pos.Y, 2.0) + self.assertAlmostEqual(self.client.region_pos.Z, 3.0) + + self.assertAlmostEqual(self.client.global_pos.X, 1.0) + self.assertAlmostEqual(self.client.global_pos.Y, 3.0) + self.assertAlmostEqual(self.client.global_pos.Z, -258.0)