Update tests to catch scaling problem in mixer.

- Fixes problem where 60% became 59% due to bad rounding.
- Tests assume scale of 0-65536 which matches ALSA.
- Check all possible values of set_volume and ensure we the right value out.
This commit is contained in:
Thomas Adamcik 2012-09-01 14:35:20 +02:00
parent 9c30fab959
commit 40502e41e5
2 changed files with 6 additions and 16 deletions

View File

@ -23,8 +23,8 @@ def rescale(v, old=None, new=None):
"""Convert value between scales."""
new_min, new_max = new
old_min, old_max = old
scaled = (new_max - new_min) / (old_max - old_min) * (v - old_min) + new_min
return int(scaled)
scaling = float(new_max - new_min) / (old_max - old_min)
return round(scaling * (v - old_min) + new_min)
def import_module(name):

View File

@ -15,7 +15,7 @@ class GStreamerTest(unittest.TestCase):
# TODO: should use a fake backend stub for this test?
settings.BACKENDS = ('mopidy.backends.local.LocalBackend',)
self.song_uri = path_to_uri(path_to_data_dir('song1.wav'))
self.gstreamer = GStreamer(mixer='fakemixer')
self.gstreamer = GStreamer(mixer='fakemixer track_max_volume=65536')
def prepare_uri(self, uri):
self.gstreamer.prepare_change()
@ -50,20 +50,10 @@ class GStreamerTest(unittest.TestCase):
def test_end_of_data_stream(self):
pass # TODO
def test_default_get_volume_result(self):
self.assertEqual(100, self.gstreamer.get_volume())
def test_set_volume(self):
self.assertTrue(self.gstreamer.set_volume(50))
self.assertEqual(50, self.gstreamer.get_volume())
def test_set_volume_to_zero(self):
self.assertTrue(self.gstreamer.set_volume(0))
self.assertEqual(0, self.gstreamer.get_volume())
def test_set_volume_to_one_hundred(self):
self.assertTrue(self.gstreamer.set_volume(100))
self.assertEqual(100, self.gstreamer.get_volume())
for value in range(0, 101):
self.assertTrue(self.gstreamer.set_volume(value))
self.assertEqual(value, self.gstreamer.get_volume())
@unittest.SkipTest
def test_set_state_encapsulation(self):