Added tests for loader and util

This commit is contained in:
Paulus Schoutsen 2014-11-22 23:31:52 -08:00
parent b94ab32d60
commit 38b85e3ca2
2 changed files with 111 additions and 3 deletions

View File

@ -17,6 +17,8 @@ from datetime import datetime
import requests import requests
import homeassistant as ha import homeassistant as ha
import homeassistant.loader as loader
import homeassistant.util as util
import homeassistant.remote as remote import homeassistant.remote as remote
import homeassistant.components.http as http import homeassistant.components.http as http
@ -365,6 +367,95 @@ class TestServiceRegistry(unittest.TestCase):
self.services.has_service("test_domain", "test_service")) self.services.has_service("test_domain", "test_service"))
class TestLoader(unittest.TestCase):
""" Test the loader module. """
def setUp(self): # pylint: disable=invalid-name
self.hass = ha.HomeAssistant()
loader.prepare(self.hass)
def test_get_component(self):
""" Test if get_component works. """
self.assertEqual(http, loader.get_component('http'))
class TestUtil(unittest.TestCase):
""" Tests util methods. """
def test_sanitize_filename(self):
""" Test sanitize_filename. """
self.assertEqual("test", util.sanitize_filename("test"))
self.assertEqual("test", util.sanitize_filename("/test"))
self.assertEqual("test", util.sanitize_filename("..test"))
self.assertEqual("test", util.sanitize_filename("\\test"))
self.assertEqual("test", util.sanitize_filename("\\../test"))
def test_sanitize_path(self):
""" Test sanitize_path. """
self.assertEqual("test/path", util.sanitize_path("test/path"))
self.assertEqual("test/path", util.sanitize_path("~test/path"))
self.assertEqual("//test/path",
util.sanitize_path("~/../test/path"))
def test_slugify(self):
""" Test slugify. """
self.assertEqual("Test", util.slugify("T-!@#$!#@$!$est"))
self.assertEqual("Test_More", util.slugify("Test More"))
self.assertEqual("Test_More", util.slugify("Test_(More)"))
def test_datetime_to_str(self):
""" Test datetime_to_str. """
self.assertEqual("12:00:00 09-07-1986",
util.datetime_to_str(datetime(1986, 7, 9, 12, 0, 0)))
def test_str_to_datetime(self):
""" Test str_to_datetime. """
self.assertEqual(datetime(1986, 7, 9, 12, 0, 0),
util.str_to_datetime("12:00:00 09-07-1986"))
def test_split_entity_id(self):
""" Test split_entity_id. """
self.assertEqual(['domain', 'object_id'],
util.split_entity_id('domain.object_id'))
def test_repr_helper(self):
""" Test repr_helper. """
self.assertEqual("A", util.repr_helper("A"))
self.assertEqual("5", util.repr_helper(5))
self.assertEqual("True", util.repr_helper(True))
self.assertEqual("test=1, more=2",
util.repr_helper({"test": 1, "more": 2}))
self.assertEqual("12:00:00 09-07-1986",
util.repr_helper(datetime(1986, 7, 9, 12, 0, 0)))
# pylint: disable=invalid-name
def test_color_RGB_to_xy(self):
""" Test color_RGB_to_xy. """
self.assertEqual((0, 0), util.color_RGB_to_xy(0, 0, 0))
self.assertEqual((0.3127159072215825, 0.3290014805066623),
util.color_RGB_to_xy(255, 255, 255))
self.assertEqual((0.15001662234042554, 0.060006648936170214),
util.color_RGB_to_xy(0, 0, 255))
self.assertEqual((0.3, 0.6), util.color_RGB_to_xy(0, 255, 0))
self.assertEqual((0.6400744994567747, 0.3299705106316933),
util.color_RGB_to_xy(255, 0, 0))
def test_convert(self):
""" Test convert. """
self.assertEqual(5, util.convert("5", int))
self.assertEqual(5.0, util.convert("5", float))
self.assertEqual(True, util.convert("True", bool))
self.assertEqual(1, util.convert("NOT A NUMBER", int, 1))
self.assertEqual(1, util.convert(None, int, 1))
def test_ensure_unique_string(self):
""" Test ensure_unique_string. """
self.assertEqual(
"Beer_3",
util.ensure_unique_string("Beer", ["Beer", "Beer_2"]))
class TestHTTP(unittest.TestCase): class TestHTTP(unittest.TestCase):
""" Test the HTTP debug interface and API. """ """ Test the HTTP debug interface and API. """
@ -588,6 +679,14 @@ class TestRemoteMethods(unittest.TestCase):
cls.api = remote.API("127.0.0.1", API_PASSWORD) cls.api = remote.API("127.0.0.1", API_PASSWORD)
def test_validate_api(self):
""" Test Python API validate_api. """
self.assertEqual(remote.APIStatus.OK, remote.validate_api(self.api))
self.assertEqual(remote.APIStatus.INVALID_PASSWORD,
remote.validate_api(
remote.API("127.0.0.1", API_PASSWORD + "A")))
def test_get_event_listeners(self): def test_get_event_listeners(self):
""" Test Python API get_event_listeners. """ """ Test Python API get_event_listeners. """
local_data = self.hass.bus.listeners local_data = self.hass.bus.listeners
@ -677,6 +776,12 @@ class TestRemoteClasses(unittest.TestCase):
cls.hass = ensure_homeassistant_started() cls.hass = ensure_homeassistant_started()
cls.slave = ensure_slave_started() cls.slave = ensure_slave_started()
def test_home_assistant_init(self):
""" Test HomeAssistant init. """
self.assertRaises(
ha.HomeAssistantError, remote.HomeAssistant,
remote.API('127.0.0.1', API_PASSWORD + 'A', 8124))
def test_statemachine_init(self): def test_statemachine_init(self):
""" Tests if remote.StateMachine copies all states on init. """ """ Tests if remote.StateMachine copies all states on init. """
self.assertEqual(len(self.hass.states.all()), self.assertEqual(len(self.hass.states.all()),

View File

@ -24,13 +24,13 @@ def sanitize_filename(filename):
def sanitize_path(path): def sanitize_path(path):
""" Sanitizes a path by removing .. / and \\. """ """ Sanitizes a path by removing ~ and .. """
return RE_SANITIZE_PATH.sub("", path) return RE_SANITIZE_PATH.sub("", path)
def slugify(text): def slugify(text):
""" Slugifies a given text. """ """ Slugifies a given text. """
text = text.strip().replace(" ", "_") text = text.replace(" ", "_")
return RE_SLUGIFY.sub("", text) return RE_SLUGIFY.sub("", text)
@ -76,6 +76,9 @@ def repr_helper(inp):
# pylint: disable=invalid-name # pylint: disable=invalid-name
def color_RGB_to_xy(R, G, B): def color_RGB_to_xy(R, G, B):
""" Convert from RGB color to XY color. """ """ Convert from RGB color to XY color. """
if R + G + B == 0:
return 0, 0
var_R = (R / 255.) var_R = (R / 255.)
var_G = (G / 255.) var_G = (G / 255.)
var_B = (B / 255.) var_B = (B / 255.)
@ -124,7 +127,7 @@ def ensure_unique_string(preferred_string, current_strings):
tries = 1 tries = 1
while preferred_string in current_strings: while string in current_strings:
tries += 1 tries += 1
string = "{}_{}".format(preferred_string, tries) string = "{}_{}".format(preferred_string, tries)