|
|
@@ -123,19 +123,36 @@ class DenonAVR(object,basic.LineReceiver): |
|
|
|
|
|
|
|
@staticmethod |
|
|
|
def _makevolarg(arg): |
|
|
|
arg = int(arg) |
|
|
|
arg = float(arg) |
|
|
|
if arg < 0 or arg > 99: |
|
|
|
raise ValueError('Volume out of range.') |
|
|
|
|
|
|
|
arg -= 1 |
|
|
|
arg %= 100 |
|
|
|
|
|
|
|
return '%02d' % arg |
|
|
|
# XXX - this rounding isn't even (going to closest .5) |
|
|
|
# Force round to 5's |
|
|
|
arg *= 2 |
|
|
|
arg = int(arg) |
|
|
|
# Scale to 10x |
|
|
|
arg *= 5 |
|
|
|
if arg % 10 != 0: |
|
|
|
return '%03d' % arg |
|
|
|
else: |
|
|
|
return '%02d' % (arg / 10) |
|
|
|
|
|
|
|
@staticmethod |
|
|
|
def _parsevolarg(arg): |
|
|
|
if len(arg) == 3: |
|
|
|
fract = True |
|
|
|
else: |
|
|
|
fract = False |
|
|
|
|
|
|
|
arg = int(arg) |
|
|
|
if arg < 0 or arg > 99: |
|
|
|
if fract: |
|
|
|
arg /= 10. |
|
|
|
|
|
|
|
if arg < 0 or arg > 99.5: |
|
|
|
raise ValueError('Volume out of range.') |
|
|
|
|
|
|
|
arg += 1 |
|
|
@@ -365,12 +382,24 @@ class TestStaticMethods(unittest.TestCase): |
|
|
|
self.assertRaises(ValueError, DenonAVR._makevolarg, 100) |
|
|
|
|
|
|
|
self.assertEqual(DenonAVR._makevolarg(0), '99') |
|
|
|
self.assertEqual(DenonAVR._makevolarg(0.1), '99') |
|
|
|
self.assertEqual(DenonAVR._makevolarg(0.4), '99') |
|
|
|
self.assertEqual(DenonAVR._makevolarg(0.5), '995') |
|
|
|
self.assertEqual(DenonAVR._makevolarg(0.6), '995') |
|
|
|
self.assertEqual(DenonAVR._makevolarg(0.9), '995') |
|
|
|
self.assertEqual(DenonAVR._makevolarg(1), '00') |
|
|
|
self.assertEqual(DenonAVR._makevolarg(1.5), '005') |
|
|
|
self.assertEqual(DenonAVR._makevolarg(7.5), '065') |
|
|
|
self.assertEqual(DenonAVR._makevolarg(99), '98') |
|
|
|
|
|
|
|
def test_parsevolarg(self): |
|
|
|
self.assertEqual(DenonAVR._parsevolarg('99'), 0) |
|
|
|
self.assertEqual(DenonAVR._parsevolarg('995'), 0.5) |
|
|
|
self.assertEqual(DenonAVR._parsevolarg('00'), 1) |
|
|
|
self.assertEqual(DenonAVR._parsevolarg('005'), 1.5) |
|
|
|
self.assertEqual(DenonAVR._parsevolarg('075'), 8.5) |
|
|
|
self.assertEqual(DenonAVR._parsevolarg('085'), 9.5) |
|
|
|
self.assertEqual(DenonAVR._parsevolarg('80'), 81) |
|
|
|
self.assertEqual(DenonAVR._parsevolarg('98'), 99) |
|
|
|
|
|
|
|
self.assertRaises(ValueError, DenonAVR._parsevolarg, '-1') |
|
|
@@ -526,6 +555,12 @@ class TestMethods(unittest.TestCase): |
|
|
|
|
|
|
|
self.assertEqual(self.tr.value(), 'MV19\r') |
|
|
|
|
|
|
|
self.tr.clear() |
|
|
|
|
|
|
|
avr.vol = 20.5 |
|
|
|
|
|
|
|
self.assertEqual(self.tr.value(), 'MV195\r') |
|
|
|
|
|
|
|
def test_proc_events(self): |
|
|
|
avr = self.avr |
|
|
|
|
|
|
@@ -642,6 +677,9 @@ class TestMethods(unittest.TestCase): |
|
|
|
avr.proc_MV('MAX 80') |
|
|
|
self.assertEqual(avr.volmax, 81) |
|
|
|
|
|
|
|
avr.proc_MV('085') |
|
|
|
self.assertEqual(avr.vol, 9.5) |
|
|
|
|
|
|
|
avr.proc_MV('99') |
|
|
|
self.assertEqual(avr.vol, 0) |
|
|
|
|
|
|
|