diff --git a/greenpithumb/light_sensor.py b/greenpithumb/light_sensor.py index 4366da8..4800c94 100644 --- a/greenpithumb/light_sensor.py +++ b/greenpithumb/light_sensor.py @@ -4,6 +4,14 @@ _LIGHT_SENSOR_MAX_VALUE = adc.PIN_MAX_VALUE +class Error(Exception): + pass + + +class LightSensorLowError(Error): + pass + + class LightSensor(object): """Wrapper for light sensor.""" @@ -21,7 +29,10 @@ def get_light_level(self): light_level = self._adc.read_pin(adc.PIN_LIGHT_SENSOR) if light_level < _LIGHT_SENSOR_MIN_VALUE: - raise ValueError('Light sensor reading out of range') + raise LightSensorLowError( + ('Light sensor reading of %.1f is less than the minimum ' + 'expected value of %.1f.') % (light_level, + _LIGHT_SENSOR_MIN_VALUE)) light_level_as_pct = 100 * ( (light_level - _LIGHT_SENSOR_MIN_VALUE) / diff --git a/tests/test_light_sensor.py b/tests/test_light_sensor.py index 13fd71e..f6d0f66 100644 --- a/tests/test_light_sensor.py +++ b/tests/test_light_sensor.py @@ -23,7 +23,7 @@ def test_light_50_pct(self): def test_light_level_too_low(self): """Light sensor value less than min should raise a ValueError.""" - with self.assertRaises(ValueError): + with self.assertRaises(light_sensor.LightSensorLowError): self.mock_adc.read_pin.return_value = ( light_sensor._LIGHT_SENSOR_MIN_VALUE - 1) self.light_sensor.get_light_level()