1 from panda3d
.core
import load_prc_file_data
2 load_prc_file_data('', 'window-type none')
3 from pathlib
import Path
5 if '' in sys
.path
: sys
.path
.remove('')
6 sys
.path
.append(str(Path(__file__
).parent
.parent
.parent
))
7 from os
.path
import basename
9 from unittest
import TestCase
10 from unittest
.mock
import patch
11 from direct
.showbase
.ShowBase
import ShowBase
12 from panda3d
.core
import AudioSound
13 from pmachines
.audio
.music
import MusicManager
14 from pmachines
.audio
import music
17 class MusicTests(TestCase
):
20 self
.__app
= ShowBase()
25 @patch.object(music
, 'AudioTools', autospec
=True)
26 def test_music(self
, a
):
27 m
= MusicManager(.8, 'pmachines')
28 a
.set_volume
.assert_called_once()
29 a_args
= a
.set_volume
.call_args_list
[0].args
30 self
.assertAlmostEqual(a_args
[0], .8, delta
=.01)
31 self
.assertEqual(len(a_args
), 1)
32 tasks
= [t
.name
for t
in taskMgr
.getTasks() + taskMgr
.getDoLaters()]
33 self
.assertIn('on frame music', tasks
)
34 _music
= m
._MusicManager
__music
35 musics
= list(map(basename
, glob('assets/audio/music/*.ogg')))
36 self
.assertIn(_music
.get_name(), musics
)
37 self
.assertEqual(_music
.status(), AudioSound
.PLAYING
)
38 prev_music_name
= _music
.get_name()
39 m
._MusicManager
__restart
_music
()
40 _music
= m
._MusicManager
__music
41 self
.assertIn(_music
.get_name(), musics
)
42 self
.assertEqual(_music
.status(), AudioSound
.PLAYING
)
43 self
.assertNotEqual(_music
.get_name(), prev_music_name
)