Add tests for setting voice region pos

This commit is contained in:
Salad Dais
2023-12-18 21:16:35 +00:00
parent 6da766ef22
commit 12c0deadee

View File

@@ -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)