Browse Source

tests: add unit tests for Audio3DManager sound velocity

rdb 7 years ago
parent
commit
0c5546bcb0
1 changed files with 55 additions and 0 deletions
  1. 55 0
      tests/showbase/test_Audio3DManager.py

+ 55 - 0
tests/showbase/test_Audio3DManager.py

@@ -0,0 +1,55 @@
+from direct.showbase.Audio3DManager import Audio3DManager
+from panda3d import core
+import pytest
+
+
[email protected](scope='session')
+def manager3d():
+    root = core.NodePath("root")
+    manager = core.AudioManager.create_AudioManager()
+    manager3d = Audio3DManager(manager, root=root)
+    yield manager3d
+    del manager3d
+    manager.shutdown()
+
+
+def test_audio3dmanager_velocity(manager3d):
+    sound = manager3d.load_sfx("nonexistent")
+
+    # Generate an object with movement
+    object = core.NodePath("object")
+    object.set_pos(0, 0, 0)
+    object.set_fluid_pos(1, 2, 3)
+    assert object.get_pos_delta() == (1, 2, 3)
+
+    res = manager3d.attach_sound_to_object(sound, object)
+    assert res
+
+    clock = core.ClockObject.get_global_clock()
+    clock.mode = core.ClockObject.M_slave
+    clock.dt = 0.5
+
+    # Test auto velocity calculation
+    manager3d.set_sound_velocity_auto(sound)
+    assert manager3d.get_sound_velocity(sound) == (2, 4, 6)
+
+    # Test setting to fixed value
+    manager3d.set_sound_velocity(sound, (5, 5, 5))
+    assert manager3d.get_sound_velocity(sound) == (5, 5, 5)
+
+
+def test_audio3dmanager_weak(manager3d):
+    sound = manager3d.load_sfx("nonexistent")
+    object = core.NodePath("object")
+
+    res = manager3d.attach_sound_to_object(sound, object)
+    assert res
+    assert object in manager3d.sound_dict
+
+    manager3d.update()
+    assert object in manager3d.sound_dict
+
+    object.remove_node()
+    manager3d.update()
+
+    assert object not in manager3d.sound_dict