def test_wind(self): events = [ 'WIND', { 'WIND': { 'task': 'TILT', 'speed': 100, 'direction': { 'from': 100, 'to': 200 } } } ] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(2, len(result)) for e in result: self.assertEqual('WIND', e.type()) self.assertEqual(120.0, result[0].speed) self.assertEqual(100, result[1].speed) self.assertIsNone(result[0].direction[0]) self.assertIsNone(result[0].direction[1]) self.assertEqual((100, 200), result[1].direction) self.assertEqual(Tilt.type(), result[1]._task.type())
def test_day_extraction_default(self): events = ['RAIN'] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(1, len(result)) e = result[0] self.assertEqual(7, len(e._on))
def test_override_night_mode(self): events = [{'CLEAR': {'night': False}}] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(1, len(result)) for e in result: self.assertEqual(WeatherConditionEnum.CLEAR, e._main) self.assertEqual('CLEAR', e.type()) self.assertFalse(e._night_mode)
def test_clear(self): events = ['CLEAR', {'CLEAR': {'task': 'TILT'}}] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(2, len(result)) for e in result: self.assertEqual(WeatherConditionEnum.CLEAR, e._main) self.assertEqual('CLEAR', e.type()) self.assertEqual(Tilt.type(), result[1]._task.type())
def test_day_extraction(self): events = [{'RAIN': {'at': ['WEEKEND']}}] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(1, len(result)) e = result[0] self.assertEqual(2, len(e._on)) for day in e._on: self.assertTrue(day in ['SU', 'SA'], 'Day {} not in list {}'.format(day, e._on))
def test_multi_sub(self): events = [{'CLOUDY': {'intensity': ['SCATTERED', 'OVERCAST']}}] b = blind(events) event.apply_weather_events(b) result = b.events[0] self.assertEqual(1, len(b._events)) self.assertEqual(Open.type(), result._task.type()) self.assertEqual(CloudsEvent.type(), result.type()) self.assertEqual(WeatherConditionEnum.CLOUDS, result._main) self.assertEqual(2, len(result._sub)) self.assertEqual(WeatherSubConditionEnum.SCATTERED, result._sub[0]) self.assertEqual(WeatherSubConditionEnum.OVERCAST, result._sub[1])
def test_rain(self): events = ['RAIN', {'RAIN': {'task': 'TILT', 'intensity': ['HEAVY']}}] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(2, len(result)) for e in result: self.assertEqual(WeatherConditionEnum.RAIN, e._main) self.assertEqual('RAIN', e.type()) self.assertEqual(1, len(result[1]._sub)) self.assertEqual(WeatherSubConditionEnum.HEAVY, result[1]._sub[0]) self.assertEqual(Tilt.type(), result[1]._task.type())
def test_snow(self): events = ['SNOW', {'SNOW': {'task': 'TILT', 'intensity': ['SLEET']}}] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(2, len(result)) for e in result: self.assertEqual(WeatherConditionEnum.SNOW, e._main) self.assertEqual('SNOW', e.type()) self.assertEqual(1, len(result[1]._sub)) self.assertEqual(WeatherSubConditionEnum.SLEET, result[1]._sub[0]) self.assertEqual(Tilt.type(), result[1]._task.type())
def test_clouds(self): events = ['CLOUDY', {'CLOUDY': {'task': 'TILT', 'coverage': 93}}] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(2, len(result)) self.assertEqual(Open.type(), result[0]._task.type()) self.assertEqual(Tilt.type(), result[1]._task.type()) item = result[0] self.assertEqual(CloudsEvent.type(), item.type()) self.assertEqual(WeatherConditionEnum.CLOUDS, item._main) self.assertEqual(0, len(item._sub)) self.assertEqual(100, item.percentage) item = result[1] self.assertEqual(CloudsEvent.type(), item.type()) self.assertEqual(WeatherConditionEnum.CLOUDS, item._main) self.assertEqual(0, len(item._sub)) self.assertEqual(93, item.percentage)
def test_drizzle(self): events = [ 'DRIZZLE', { 'DRIZZLE': { 'task': 'TILT', 'intensity': ['SHOWER'] } } ] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(2, len(result)) for e in result: self.assertEqual(WeatherConditionEnum.DRIZZLE, e._main) self.assertEqual('DRIZZLE', e.type()) self.assertEqual(1, len(result[1]._sub)) self.assertEqual(WeatherSubConditionEnum.SHOWER, result[1]._sub[0]) self.assertEqual(Tilt.type(), result[1]._task.type())
def test_special_weather(self): events = [ 'SPECIAL', { 'SPECIAL': { 'task': 'TILT', 'events': ['TORNADO'] } } ] b = blind(events) event.apply_weather_events(b) result = b.events self.assertEqual(2, len(result)) for e in result: self.assertEqual(WeatherConditionEnum.ATMOSPHERE, e._main) self.assertEqual('SPECIAL', e.type()) self.assertEqual(1, len(result[1]._sub)) self.assertEqual(WeatherSubConditionEnum.TORNADO, result[1]._sub[0]) self.assertEqual(Tilt.type(), result[1]._task.type())