class ACStateTest(unittest.TestCase):
    def setUp(self):
        with open(Config.test_context["acStateCSVFilePath"], "w") as f:
            f.write("2016-04-01 13:24:00,off,cool,25,breeze")

        with open(Config.test_context["acStateLogCSVFilePath"], "w") as f:
            f.write("2016-04-01 13:24:00,off,cool,25,breeze")

        self.acstate = ACState(Config.test_context)

    def tearDown(self):
        os.remove(Config.test_context["acStateCSVFilePath"])
        os.remove(Config.test_context["acStateLogCSVFilePath"])

    def test_initiate_and_getter(self):
        # test ACState initiation
        self.assertEqual(self.acstate.__repr__(),
                         '<2016-04-01 13:24:00 off cool 25 breeze>')

    def test_makeSignalName(self):
        signal = self.acstate._makeSignalName()
        self.assertEqual(signal, 'off')

        self.acstate.onoff = "on"
        signal = self.acstate._makeSignalName()
        self.assertEqual(signal, 'cool25breeze')

    def test_states_setter_restrict(self):
        self.acstate.onoff = "on"
        self.assertEqual(self.acstate.onoff, 'on')

        # setter制限が働いているか確認
        self.acstate.onoff = "ok"
        self.assertEqual(self.acstate.onoff, 'on')

        self.acstate.operating = "warm"
        self.assertEqual(self.acstate.operating, 'warm')

        # setter制限が働いているか確認
        self.acstate.operating = "supercool"
        self.assertEqual(self.acstate.operating, 'warm')

        self.acstate.temperature = 30
        self.assertEqual(self.acstate.temperature, 30)

        # setter制限が働いているか確認
        self.acstate.temperature += 1
        self.assertEqual(self.acstate.temperature, 30)

        self.acstate.temperature = 18
        self.assertEqual(self.acstate.temperature, 18)

        # setter制限が働いているか確認
        self.acstate.temperature -= 1
        self.assertEqual(self.acstate.temperature, 18)

        self.acstate.wind = "strong"
        self.assertEqual(self.acstate.wind, "strong")

        # setter制限が働いているか確認
        self.acstate.wind = "week"
        self.assertEqual(self.acstate.wind, "strong")