"""Tests Home Assistant temperature helpers."""
import unittest

from tests.common import get_test_home_assistant

from homeassistant.const import (
    TEMP_CELSIUS, PRECISION_WHOLE, TEMP_FAHRENHEIT, PRECISION_HALVES,
    PRECISION_TENTHS)
from homeassistant.helpers.temperature import display_temp
from homeassistant.util.unit_system import METRIC_SYSTEM

TEMP = 24.636626


class TestHelpersTemperature(unittest.TestCase):
    """Setup the temperature tests."""

    def setUp(self):
        """Setup the tests."""
        self.hass = get_test_home_assistant()
        self.hass.config.unit_system = METRIC_SYSTEM

    def tearDown(self):
        """Stop down stuff we started."""
        self.hass.stop()

    def test_temperature_not_a_number(self):
        """Test that temperature is a number."""
        temp = "Temperature"
        with self.assertRaises(Exception) as context:
            display_temp(self.hass, temp, TEMP_CELSIUS, PRECISION_HALVES)

        self.assertTrue("Temperature is not a number: {}".format(temp)
                        in str(context.exception))

    def test_celsius_halves(self):
        """Test temperature to celsius rounding to halves."""
        self.assertEqual(24.5, display_temp(
            self.hass, TEMP, TEMP_CELSIUS, PRECISION_HALVES))

    def test_celsius_tenths(self):
        """Test temperature to celsius rounding to tenths."""
        self.assertEqual(24.6, display_temp(
            self.hass, TEMP, TEMP_CELSIUS, PRECISION_TENTHS))

    def test_fahrenheit_wholes(self):
        """Test temperature to fahrenheit rounding to wholes."""
        self.assertEqual(-4, display_temp(
            self.hass, TEMP, TEMP_FAHRENHEIT, PRECISION_WHOLE))