def index():
    state = ACState(Config.context)  # ステータスデータを読み込む

    # 日本語変換
    jstate = state.convertToJapanese()

    return render_template('index.html', state=state, jstate=jstate)
def modeTemperature(temperatureMode):
    # ACStateインスタンス読み込み
    state = ACState(Config.context)

    # ステート変更 ログファイル追加
    if temperatureMode == "up" and state.temperature >= 30:
        flash('最大設定温度です')
    elif temperatureMode == "up":
        state.temperature += 1

    if temperatureMode == "down" and state.temperature <= 18:
        flash('最低設定温度です')
    elif temperatureMode == "down":
        state.temperature -= 1

    # stateを元に赤外線送信
    if not state.sendSignalToAC():
        flash('信号を送信できませんでした')

    # 日本語変換
    jstate = state.convertToJapanese()

    # 実験用ログ書き込み
    lffe = LogFileForExperiment(context=Config.context,
                                acstate=state,
                                ipaddr=request.remote_addr)
    lffe.write_log_file()

    return render_template('index.html', state=state, jstate=jstate)
    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 modeOperating(operatingMode):
    # ACStateインスタンス読み込み
    state = ACState(Config.context)

    # ステート変更 ログファイル追加
    state.operating = operatingMode

    # stateを元に赤外線送信
    if not state.sendSignalToAC():
        flash('信号を送信できませんでした')

    # 日本語変換
    jstate = state.convertToJapanese()

    # 実験用ログ書き込み
    lffe = LogFileForExperiment(context=Config.context,
                                acstate=state,
                                ipaddr=request.remote_addr)
    lffe.write_log_file()

    return render_template('index.html', state=state, jstate=jstate)
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")