コード例 #1
0
 def test_initial_from_device(self):
     d1 = StateDevice()
     self.assertEqual(d1.state, State.UNKNOWN)
     d1.on()
     self.assertEqual(d1.state, State.ON)
     d2 = StateDevice(devices=d1)
     self.assertEqual(d2.state, State.ON)
コード例 #2
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_state_ignore_range(self):
     (s_h, s_m, s_s) = datetime.now().timetuple()[3:6]
     e_h = s_h
     e_m = s_m
     e_s = s_s + 2
     s = StateDevice()
     s2 = StateDevice(devices=s,
                      ignore={
                              Attribute.SOURCE: s,
                              Attribute.START: '{h}:{m}:{s}'.format(
                                                                   h=s_h,
                                                                   m=s_m,
                                                                   s=s_s,
                                                                   ),
                              Attribute.END: '{h}:{m}:{s}'.format(
                                                                   h=e_h,
                                                                   m=e_m,
                                                                   s=e_s,
                                                                   ),
                              },
                      
                      )
     self.assertEqual(s2.state, State.UNKNOWN)
     s.on()
     self.assertEqual(s2.state, State.UNKNOWN)
     time.sleep(3)
     s.on()
     self.assertEqual(s2.state, State.ON)
コード例 #3
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_binding_default(self):
     d1 = StateDevice()
     d1.off()
     d2 = StateDevice(d1)
     self.assertEqual(d2.state, State.OFF)
     d1.on()
     self.assertEqual(d2.state, State.ON)
コード例 #4
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_last_command(self):
     s1 = StateDevice()
     s1.on()
     self.assertEqual(s1.state, State.ON)
     s1.off()
     self.assertEqual(s1.state, State.OFF)
     self.assertEqual(s1.last_command, Command.OFF)
コード例 #5
0
 def test_override_default_maps(self):
     d = StateDevice(mapped={
         Attribute.COMMAND: Command.ON,
         Attribute.MAPPED: Command.OFF,
     })
     d.on()
     self.assertEqual(d.state, State.OFF)
コード例 #6
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_trigger_time_range(self):
     (s_h, s_m, s_s) = datetime.now().timetuple()[3:6]
     e_h = s_h
     e_m = s_m
     e_s = s_s + 2
     s = StateDevice()
     s2 = StateDevice(devices=s,
                      trigger={
                             Attribute.COMMAND: Command.ON,
                             Attribute.MAPPED: Command.OFF,
                             Attribute.SECS: 1,
                              Attribute.START: '{h}:{m}:{s}'.format(
                                                                   h=s_h,
                                                                   m=s_m,
                                                                   s=s_s,
                                                                   ),
                              Attribute.END: '{h}:{m}:{s}'.format(
                                                                   h=e_h,
                                                                   m=e_m,
                                                                   s=e_s,
                                                                   ),
                              },
                      
                      )
     self.assertEqual(s2.state, State.UNKNOWN)
     s.on()
     self.assertEqual(s2.state, State.ON)
     time.sleep(3)
     self.assertEqual(s2.state, State.OFF)
     ##
     time.sleep(2)
     s.on()
     time.sleep(3)
     self.assertEqual(s2.state, State.ON)
コード例 #7
0
 def test_time_off(self):
     now = datetime.now()
     hours, mins, secs = now.timetuple()[3:6]
     secs = (secs + 2) % 60
     mins += (secs + 2) / 60
     trigger_time1 = '{h}:{m}:{s}'.format(
         h=hours,
         m=mins,
         s=secs,
     )
     print 'Trigger Time' + trigger_time1
     secs = (secs + 2) % 60
     mins += (secs + 2) / 60
     trigger_time2 = '{h}:{m}:{s}'.format(
         h=hours,
         m=mins,
         s=secs,
     )
     print 'Trigger Time' + trigger_time2
     device = StateDevice(
         time={
             Attribute.COMMAND: Command.OFF,
             Attribute.TIME: (trigger_time1, trigger_time2),
         })
     self.assertEqual(device.state, State.UNKNOWN)
     time.sleep(3)
     print datetime.now()
     self.assertEqual(device.state, State.OFF)
     device.on()
     time.sleep(3)
     print datetime.now()
     print device._times
     self.assertEqual(device.state, State.OFF)
コード例 #8
0
 def test_loop_prevention(self):
     s1 = StateDevice()
     s2 = StateDevice()
     s1.devices(s2)
     s2.devices(s1)
     s1.on()
     pass
コード例 #9
0
ファイル: light.py プロジェクト: E3Dev/pytomation
    def test_trigger_out_range_gc(self):
        (s_h, s_m, s_s) = datetime.now().timetuple()[3:6]
        e_h = s_h
        e_m = s_m
        e_s = s_s + 2
        d1 = StateDevice()
        d2 = Light(
                   devices=d1,
                   trigger={
                            Attribute.COMMAND: Command.ON,
                            Attribute.MAPPED: Command.OFF,
                            Attribute.SECS: 2,
                            Attribute.START: '{h}:{m}:{s}'.format(
                                                                 h=s_h,
                                                                 m=s_m,
                                                                 s=s_s,
                                                                 ),
                            Attribute.END: '{h}:{m}:{s}'.format(
                                                                 h=e_h,
                                                                 m=e_m,
                                                                 s=e_s,
                                                                 ),
                            }
                   )

        time.sleep(3)
        self.assertEqual(d2.state, State.UNKNOWN)
        d1.on()
        self.assertEqual(d2.state, State.ON)
        time.sleep(3)
        self.assertEqual(d2.state, State.ON)
コード例 #10
0
ファイル: light.py プロジェクト: ver007/pytomation
    def test_trigger_out_range_gc(self):
        (s_h, s_m, s_s) = datetime.now().timetuple()[3:6]
        e_h = s_h
        e_m = s_m
        e_s = s_s + 2
        d1 = StateDevice()
        d2 = Light(devices=d1,
                   trigger={
                       Attribute.COMMAND: Command.ON,
                       Attribute.MAPPED: Command.OFF,
                       Attribute.SECS: 2,
                       Attribute.START: '{h}:{m}:{s}'.format(
                           h=s_h,
                           m=s_m,
                           s=s_s,
                       ),
                       Attribute.END: '{h}:{m}:{s}'.format(
                           h=e_h,
                           m=e_m,
                           s=e_s,
                       ),
                   })

        time.sleep(3)
        self.assertEqual(d2.state, State.UNKNOWN)
        d1.on()
        self.assertEqual(d2.state, State.ON)
        time.sleep(3)
        self.assertEqual(d2.state, State.ON)
コード例 #11
0
    def run(self):
        if self._ssl_path:
            self.ws = WebSocketServer(
                (self._address, self._port),
                Resource(
                    {
                        "/api/bridge": PytoWebSocketApp,
                        "/api/device*": self.api_app,
                        "/api/voice": self.api_app,
                        "/": self.http_file_app,
                    }
                ),
                pre_start_hook=auth_hook,
                keyfile=self._ssl_path + "/server.key",
                certfile=self._ssl_path + "/server.crt",
            )
        else:
            self.ws = WebSocketServer(
                (self._address, self._port),
                Resource(
                    {
                        "/api/bridge": PytoWebSocketApp,
                        "/api/device*": self.api_app,
                        "/api/voice": self.api_app,
                        "/": self.http_file_app,
                    }
                ),
                pre_start_hook=auth_hook,
            )

        print "Serving WebSocket Connection on", self._address, "port", self._port, "..."
        StateDevice.onStateChangedGlobal(self.broadcast_state)
        self.ws.serve_forever()
コード例 #12
0
ファイル: websocket_server.py プロジェクト: ver007/pytomation
    def run(self):
        if self._ssl_path:
            self.ws = WebSocketServer((self._address, self._port),
                                      Resource({
                                          '/api/bridge': PytoWebSocketApp,
                                          '/api/device*': self.api_app,
                                          '/api/voice': self.api_app,
                                          '/': self.http_file_app
                                      }),
                                      pre_start_hook=auth_hook,
                                      keyfile=self._ssl_path + '/server.key',
                                      certfile=self._ssl_path + '/server.crt')
        else:
            self.ws = WebSocketServer((self._address, self._port),
                                      Resource({
                                          '/api/bridge': PytoWebSocketApp,
                                          '/api/device*': self.api_app,
                                          '/api/voice': self.api_app,
                                          '/': self.http_file_app
                                      }),
                                      pre_start_hook=auth_hook)

        print "Serving WebSocket Connection on", self._address, "port", self._port, "..."
        StateDevice.onStateChangedGlobal(self.broadcast_state)
        self.ws.serve_forever()
コード例 #13
0
ファイル: pytomation_api.py プロジェクト: ver007/pytomation
 def test_device_on(self):
     d=StateDevice(name='device_test_1')
     d.off()
     self.assertEqual(d.state, State.OFF)
     response = self.api.get_response(method='POST', path="device/" + str(d.type_id), data=['command=on'])
     self.assertEqual(d.state, State.ON)
     self.assertTrue('"name": "device_test_1"' in response)
コード例 #14
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_time_off(self):
     now = datetime.now()
     hours, mins, secs = now.timetuple()[3:6]
     secs = (secs + 2) % 60
     mins += (secs + 2) / 60
     trigger_time1 = '{h}:{m}:{s}'.format(
                                          h=hours,
                                          m=mins,
                                          s=secs,
                                              )
     print 'Trigger Time' + trigger_time1
     secs = (secs + 2) % 60
     mins += (secs + 2) / 60
     trigger_time2 = '{h}:{m}:{s}'.format(
                                          h=hours,
                                          m=mins,
                                          s=secs,
                                              )
     print 'Trigger Time' + trigger_time2
     device = StateDevice(
                           time={
                                 
                                 Attribute.COMMAND: Command.OFF,
                                 Attribute.TIME: (trigger_time1, trigger_time2),
                                 }
                           )
     self.assertEqual(device.state, State.UNKNOWN)
     time.sleep(3)
     print datetime.now()
     self.assertEqual(device.state, State.OFF)
     device.on()
     time.sleep(3)
     print datetime.now()
     print device._times
     self.assertEqual(device.state, State.OFF)
コード例 #15
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_initial_from_device(self):
     d1 = StateDevice(
                       )
     self.assertEqual(d1.state, State.UNKNOWN)
     d1.on()
     self.assertEqual(d1.state, State.ON)
     d2 = StateDevice(devices=d1)
     self.assertEqual(d2.state, State.ON)
コード例 #16
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_override_default_maps(self):
     d = StateDevice(
                      mapped={
                              Attribute.COMMAND: Command.ON,
                              Attribute.MAPPED: Command.OFF,
                              }
                      )
     d.on()
     self.assertEqual(d.state, State.OFF)
コード例 #17
0
 def test_bind_devices_initial_state(self):
     s1 = StateDevice()
     self.assertEqual(s1.state, State.UNKNOWN)
     s1.on()
     self.assertEqual(s1.state, State.ON)
     s2 = StateDevice(s1)
     self.assertEqual(s2.state, State.ON)
     s3 = StateDevice(s1, initial_state=State.OFF)
     self.assertEqual(s3.state, State.OFF)
コード例 #18
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_ignore_device(self):
     s1 = StateDevice()
     s2 = StateDevice(devices=s1,
                      ignore={
                              Attribute.SOURCE: s1
                              }
                      )
     self.assertEqual(s2.state, State.UNKNOWN)
     s1.on()
     self.assertEqual(s2.state, State.UNKNOWN)
コード例 #19
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_delay_zero_secs(self):
     d1 = StateDevice()
     d2 = StateDevice()
     d3 = StateDevice(
                      devices=(d1, d2),
                      delay=({
                             Attribute.COMMAND: Command.OFF,
                             Attribute.SECS: 2
                             },
                             {
                              Attribute.COMMAND: Command.OFF,
                              Attribute.SECS: 0,
                              Attribute.SOURCE: d2,
                              }
                             ),
                      initial=State.ON,
                      )    
     self.assertEqual(d3.state, State.ON)
     d1.off()
     self.assertEqual(d3.state, State.ON)
     time.sleep(3)
     self.assertEqual(d3.state, State.OFF)
     d3.on()
     self.assertEqual(d3.state, State.ON)
     d2.off()
     self.assertEqual(d3.state, State.OFF)
コード例 #20
0
 def test_map_delay(self):
     d = StateDevice(mapped={
         Attribute.COMMAND: Command.ON,
         Attribute.MAPPED: Command.OFF,
         Attribute.SECS: 2,
     }, )
     self.assertEqual(d.state, State.UNKNOWN)
     d.on()
     self.assertEqual(d.state, State.UNKNOWN)
     time.sleep(3)
     self.assertEqual(d.state, Command.OFF)
コード例 #21
0
 def test_idle(self):
     s1 = StateDevice()
     s2 = StateDevice(devices=s1,
                      idle_off=2
                      )
     s1.on()
     self.assertEqual(s2.state, State.ON)
     time.sleep(3)
     self.assertEqual(s2.state, State.OFF)
     s1.on()
     self.assertEqual(s2.state, State.ON)
コード例 #22
0
 def test_trigger(self):
     s1 = StateDevice(
         trigger={
             Attribute.COMMAND: Command.ON,
             Attribute.MAPPED: Command.OFF,
             Attribute.SECS: 2
         })
     s1.on()
     self.assertEqual(s1.state, State.ON)
     time.sleep(3)
     self.assertEqual(s1.state, State.OFF)
コード例 #23
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_ignore_multi_command(self):
     s1 = StateDevice()
     s2 = StateDevice(devices=s1,
                      ignore={
                              Attribute.COMMAND: (Command.ON, Command.OFF,)
                              },
                      )
     self.assertEqual(s2.state, State.UNKNOWN)
     s1.on()
     self.assertEqual(s2.state, State.UNKNOWN)
     s1.off()
     self.assertEqual(s2.state, State.UNKNOWN)
コード例 #24
0
ファイル: state.py プロジェクト: izzoh/pytomation
 def test_trigger(self):
     s1 = StateDevice(
                       trigger={
                                'command': Command.ON,
                                'mapped': Command.OFF,
                                'secs': 2
                                }
                       )
     s1.on();
     self.assertEqual(s1.state, State.ON)
     time.sleep(3)
     self.assertEqual(s1.state, State.OFF)
コード例 #25
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_trigger(self):
     s1 = StateDevice(
                       trigger={
                                Attribute.COMMAND: Command.ON,
                                Attribute.MAPPED: Command.OFF,
                                Attribute.SECS: 2
                                }
                       )
     s1.on();
     self.assertEqual(s1.state, State.ON)
     time.sleep(3)
     self.assertEqual(s1.state, State.OFF)
コード例 #26
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_map_delay(self):
     d = StateDevice(
                      mapped={
                              Attribute.COMMAND: Command.ON,
                              Attribute.MAPPED: Command.OFF,
                              Attribute.SECS: 2,
                              },
                      )
     self.assertEqual(d.state, State.UNKNOWN)
     d.on()
     self.assertEqual(d.state, State.UNKNOWN)
     time.sleep(3)
     self.assertEqual(d.state, Command.OFF)
コード例 #27
0
ファイル: state.py プロジェクト: kengle3/pytomation
 def test_idle_timer(self):
     s1 = StateDevice()
     s2 = StateDevice(devices=s1,
                      idle={
                            'command': State.OFF,
                            'secs': 2,
                            }
                      )
     s1.on()
     self.assertEqual(s2.state, State.ON)
     time.sleep(3)
     self.assertEqual(s2.state, State.OFF)
     s1.on()
     self.assertEqual(s2.state, State.ON)
コード例 #28
0
ファイル: state.py プロジェクト: izzoh/pytomation
    def test_delay_single(self):
        d1 = StateDevice(
                          delay={'command': Command.OFF,
                                 'secs': 2,
                                 }
                          )
        self.assertEqual(d1.state, State.UNKNOWN)
        d1.on()
        self.assertEqual(d1.state, State.ON)
        d1.off()
        self.assertEqual(d1.state, State.ON)
        time.sleep(3)
#        time.sleep(20000)
        self.assertEqual(d1.state, State.OFF)
コード例 #29
0
ファイル: state.py プロジェクト: Grant10k/pytomation
    def test_delay_single(self):
        d1 = StateDevice(
                          delay={Attribute.COMMAND: Command.OFF,
                                 Attribute.SECS: 2,
                                 }
                          )
        self.assertEqual(d1.state, State.UNKNOWN)
        d1.on()
        self.assertEqual(d1.state, State.ON)
        d1.off()
        self.assertEqual(d1.state, State.ON)
        time.sleep(3)
#        time.sleep(20000)
        self.assertEqual(d1.state, State.OFF)
コード例 #30
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_loop_prevention(self):
     s1 = StateDevice()
     s2 = StateDevice()
     s1.devices(s2)
     s2.devices(s1)
     s1.on()
     pass
コード例 #31
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_idle_timer(self):
     s1 = StateDevice()
     s2 = StateDevice(devices=s1,
                      idle={
                            Attribute.MAPPED: State.OFF,
                            Attribute.SECS: 2,
                            }
                      )
     s1.on()
     self.assertEqual(s2.state, State.ON)
     time.sleep(3)
     self.assertEqual(s2.state, State.OFF)
     s1.on()
     self.assertEqual(s2.state, State.ON)
コード例 #32
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_previous_state_twice_command(self):
     s1 = StateDevice()
     s2 = StateDevice(devices=s1)
     s1.off()
     self.assertEqual(s1.state, State.OFF)
     s1.on()
     self.assertEqual(s1.state, State.ON)
     s1.on()
     self.assertEqual(s1.state, State.ON)
     s1.previous()
     self.assertEqual(s1.state, State.OFF)
コード例 #33
0
ファイル: interface.py プロジェクト: ver007/pytomation
 def test_controlled_devices_no_delay_default(self):
     i = Mock()
     d1 = StateDevice()
     d2 = InterfaceDevice(
         devices=(i, d1),
         delay={
             Attribute.COMMAND: Command.OFF,
             Attribute.SECS: 3
         },
         initial=State.ON,
     )
     d1.off()
     self.assertEqual(d2.state, State.ON)
     d2.command(command=Command.OFF, source=i)
     self.assertEqual(d2.state, State.OFF)
コード例 #34
0
ファイル: interface.py プロジェクト: E3Dev/pytomation
 def test_controlled_devices_no_delay_default(self):
     i = Mock()
     d1 = StateDevice()
     d2 = InterfaceDevice(
                          devices=(i,d1),
                          delay={
                                 Attribute.COMMAND: Command.OFF,
                                 Attribute.SECS: 3
                                 },
                          initial=State.ON,
                          )
     d1.off()
     self.assertEqual(d2.state, State.ON)
     d2.command(command=Command.OFF, source=i)
     self.assertEqual(d2.state, State.OFF)
コード例 #35
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_state_remove_device(self):
     s1 = StateDevice()
     s2 = StateDevice(devices=s1)
     s1.on()
     self.assertEqual(s2.state, State.ON)
     s2.off()
     self.assertEqual(s2.state, State.OFF)        
     r=s2.remove_device(s1)
     self.assertTrue(r)
     self.assertEqual(s2.state, State.OFF)        
     s1.on()
     self.assertEqual(s2.state, State.OFF)     
     # remove again and not error
     r = s2.remove_device(s1)
     self.assertFalse(r)
コード例 #36
0
    def test_time_cron_off(self):
        now = datetime.now()
        hours, mins, secs = now.timetuple()[3:6]
        secs = (secs + 2) % 60
        mins += (secs + 2) / 60
        ctime = (secs, mins, hours)

        s = StateDevice(time={
            Attribute.COMMAND: Command.OFF,
            Attribute.TIME: ctime,
        })
        s.on()
        self.assertEqual(s.state, Command.ON)
        time.sleep(3)
        self.assertEqual(s.state, Command.OFF)
コード例 #37
0
 def test_map_sources(self):
     d1 = StateDevice()
     d2 = StateDevice()
     d3 = StateDevice()
     d4 = StateDevice(devices=(d1, d2, d3),
                      mapped={
                          Attribute.COMMAND: Command.ON,
                          Attribute.SOURCE: (d1, d2),
                          Attribute.MAPPED: Command.OFF,
                      })
     self.assertEqual(d4.state, State.UNKNOWN)
     d3.on()
     self.assertEqual(d4.state, State.ON)
     d2.on()
     self.assertEqual(d4.state, State.OFF)
コード例 #38
0
 def test_toggle_state(self):
     s1 = StateDevice()
     s1.on()
     self.assertEqual(s1.state, State.ON)
     s1.toggle()
     self.assertEqual(s1.state, State.OFF)
     s1.toggle()
     self.assertEqual(s1.state, State.ON)
コード例 #39
0
 def test_previous_state_command(self):
     s1 = StateDevice()
     s1.on()
     self.assertEqual(s1.state, State.ON)
     s1.off()
     self.assertEqual(s1.state, State.OFF)
     s1.previous()
     self.assertEqual(s1.state, State.ON)
コード例 #40
0
ファイル: state.py プロジェクト: Grant10k/pytomation
    def test_delay(self):
        d1 = StateDevice()
        d2 = StateDevice(devices=d1,
                          delay={Attribute.COMMAND: Command.OFF,
                                 Attribute.MAPPED: (Command.LEVEL, 80),
                                 Attribute.SOURCE: d1,
                                 Attribute.SECS: 2,
                                 })
        self.assertEqual(d2.state, State.UNKNOWN)
        d1.on()
        self.assertEqual(d2.state, State.ON)
        d1.off()
        self.assertEqual(d2.state, State.ON)
        time.sleep(3)
#        time.sleep(2000)
        self.assertEqual(d2.state, (State.LEVEL, 80))
コード例 #41
0
ファイル: state.py プロジェクト: izzoh/pytomation
    def test_delay(self):
        d1 = StateDevice()
        d2 = StateDevice(devices=d1,
                          delay={'command': Command.OFF,
                                 'mapped': (Command.LEVEL, 80),
                                 'source': d1,
                                 'secs': 2,
                                 })
        self.assertEqual(d2.state, State.UNKNOWN)
        d1.on()
        self.assertEqual(d2.state, State.ON)
        d1.off()
        self.assertEqual(d2.state, State.ON)
        time.sleep(3)
#        time.sleep(2000)
        self.assertEqual(d2.state, (State.LEVEL, 80))
コード例 #42
0
 def test_ignore_multiples_state(self):
     s1 = StateDevice()
     s2 = StateDevice(
         devices=s1,
         ignore={Attribute.COMMAND: (Command.ON, Command.OFF)},
     )
     self.assertEqual(s2.state, State.UNKNOWN)
     s1.on()
     self.assertEqual(s2.state, State.UNKNOWN)
     s1.off()
     self.assertEqual(s2.state, State.UNKNOWN)
     s1.on()
     self.assertEqual(s2.state, State.UNKNOWN)
コード例 #43
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_time_cron_off(self):
     now = datetime.now()
     hours, mins, secs = now.timetuple()[3:6]
     secs = (secs + 2) % 60
     mins += (secs + 2) / 60
     ctime = (secs, mins, hours)
     
     s = StateDevice(
                    time={
                          Attribute.COMMAND: Command.OFF,
                          Attribute.TIME: ctime,
                          }
                    )
     s.on()
     self.assertEqual(s.state, Command.ON)
     time.sleep(3)
     self.assertEqual(s.state, Command.OFF)
コード例 #44
0
 def test_onStateChangedGlobal(self):
     s1 = StateDevice()
     custom = Mock()
     s1.on()
     StateDevice.test_onStateChangedGlobal(custom.method)
     s1.off()
     custom.method.assert_called_with(State.OFF,
                                      source=None,
                                      prev=State.ON,
                                      device=s1)
コード例 #45
0
ファイル: state.py プロジェクト: Grant10k/pytomation
 def test_onStateChanged(self):
     s1 = StateDevice()
     custom = Mock()
     s1.on()
     s1.onStateChanged(custom.method)
     s1.off()
     custom.method.assert_called_with(State.OFF, source=None, prev=State.ON)
コード例 #46
0
 def test_binding_default(self):
     d1 = StateDevice()
     d1.off()
     d2 = StateDevice(d1)
     self.assertEqual(d2.state, State.OFF)
     d1.on()
     self.assertEqual(d2.state, State.ON)
コード例 #47
0
 def test_state_ignore_range(self):
     (s_h, s_m, s_s) = datetime.now().timetuple()[3:6]
     e_h = s_h
     e_m = s_m
     e_s = s_s + 2
     s = StateDevice()
     s2 = StateDevice(
         devices=s,
         ignore={
             Attribute.SOURCE: s,
             Attribute.START: '{h}:{m}:{s}'.format(
                 h=s_h,
                 m=s_m,
                 s=s_s,
             ),
             Attribute.END: '{h}:{m}:{s}'.format(
                 h=e_h,
                 m=e_m,
                 s=e_s,
             ),
         },
     )
     self.assertEqual(s2.state, State.UNKNOWN)
     s.on()
     self.assertEqual(s2.state, State.UNKNOWN)
     time.sleep(3)
     s.on()
     self.assertEqual(s2.state, State.ON)
コード例 #48
0
 def test_trigger_time_range(self):
     (s_h, s_m, s_s) = datetime.now().timetuple()[3:6]
     e_h = s_h
     e_m = s_m
     e_s = s_s + 2
     s = StateDevice()
     s2 = StateDevice(
         devices=s,
         trigger={
             Attribute.COMMAND: Command.ON,
             Attribute.MAPPED: Command.OFF,
             Attribute.SECS: 1,
             Attribute.START: '{h}:{m}:{s}'.format(
                 h=s_h,
                 m=s_m,
                 s=s_s,
             ),
             Attribute.END: '{h}:{m}:{s}'.format(
                 h=e_h,
                 m=e_m,
                 s=e_s,
             ),
         },
     )
     self.assertEqual(s2.state, State.UNKNOWN)
     s.on()
     self.assertEqual(s2.state, State.ON)
     time.sleep(3)
     self.assertEqual(s2.state, State.OFF)
     ##
     time.sleep(2)
     s.on()
     time.sleep(3)
     self.assertEqual(s2.state, State.ON)
コード例 #49
0
 def test_map(self):
     d1 = StateDevice()
     d2 = StateDevice()
     d3 = StateDevice(devices=(d1, d2),
                      mapped={
                          Attribute.COMMAND: Command.ON,
                          Attribute.MAPPED: Command.OFF,
                          Attribute.SOURCE: d2
                      })
     self.assertEqual(d3.state, State.UNKNOWN)
     d1.on()
     self.assertEqual(d3.state, State.ON)
     d2.on()
     self.assertEqual(d3.state, State.OFF)
コード例 #50
0
 def test_get_instances(self):
     mint = Mock()
     mint.read.return_value = ''
     before = get_instances()
     int = HAInterface(mint, name='Int1')
     dev = StateDevice(name='Dev1')
     a = get_instances()
     self.assertIsNotNone(a)
     self.assertEqual(len(a), len(before))
コード例 #51
0
ファイル: interface.py プロジェクト: ver007/pytomation
    def test_initial(self):
        interface = Mock()
        p = PropertyMock(side_effect=ValueError)
        type(interface).state = p
        device = InterfaceDevice(address='asdf',
                                 devices=interface,
                                 initial=State.ON)
        interface.on.assert_called_with('asdf')
        #        interface.initial.assert_called_with('asdf')

        device1 = StateDevice()
        device1.on()
        interface2 = Mock()
        type(interface2).state = p
        device = InterfaceDevice(address='asdf',
                                 devices=interface2,
                                 initial=State.ON)
        interface2.on.assert_called_with('asdf')
コード例 #52
0
 def test_idle_timer_then_trigger(self):
     s1 = StateDevice()
     s2 = StateDevice(devices=s1,
                      trigger={
                          Attribute.COMMAND: State.ON,
                          Attribute.MAPPED: State.OFF,
                          Attribute.SECS: 4,
                      },
                      idle={
                          Attribute.MAPPED: State.UNKNOWN,
                          Attribute.SECS: 2,
                      })
     s1.on()
     self.assertEqual(s2.state, State.ON)
     time.sleep(3)
     self.assertEqual(s2.state, State.UNKNOWN)
     time.sleep(5)
     self.assertEqual(s2.state, State.OFF)
コード例 #53
0
 def test_ignore_state(self):
     s1 = StateDevice()
     s2 = StateDevice(
         devices=s1,
         ignore={
             Attribute.COMMAND: Command.ON,
             Attribute.SOURCE: s1,
         },
     )
     s1.on()
     self.assertEqual(s2.state, State.UNKNOWN)
     s1.off()
     self.assertEqual(s2.state, State.OFF)
     s1.on()
     self.assertEqual(s2.state, State.OFF)
コード例 #54
0
 def test_time_range_invalid(self):
     try:
         s1 = StateDevice(
             ignore={
                 Attribute.COMMAND: Command.ON,
                 Attribute.START: '10:56 am',
                 Attribute.END: '11.02 am',
             })
         self.assertTrue(False)
     except AssertionError, ex:
         raise ex
コード例 #55
0
 def test_get_instances_detail(self):
     #l = len(get_instances())
     mint = Mock()
     mint.read.return_value = ''
     int = HAInterface(mint, name='Int1')
     dev = StateDevice(name='Dev1')
     a = get_instances_detail()
     self.assertIsNotNone(a)
     #        self.assertEqual(len(a), l+2)
     self.assertEqual(a[dev.type_id]['name'], 'Dev1')
     self.assertEqual(a[dev.type_id]['type_name'], 'StateDevice')
コード例 #56
0
 def test_delay_priority(self):
     d1 = StateDevice()
     d2 = StateDevice()
     d3 = StateDevice(
         devices=(d1, d2),
         delay=(
             {
                 Attribute.COMMAND: Command.OFF,
                 Attribute.SOURCE: d1,
                 Attribute.SECS: 4,
             },
             {
                 Attribute.COMMAND: Command.OFF,
                 Attribute.SECS: 2
             },
         ),
         initial=State.ON,
     )
     self.assertEqual(d3.state, State.ON)
     d1.off()
     self.assertEqual(d3.state, State.ON)
     time.sleep(2)
     self.assertEqual(d3.state, State.ON)
     time.sleep(2)
     self.assertEqual(d3.state, State.OFF)
コード例 #57
0
 def test_last_command(self):
     s1 = StateDevice()
     s1.on()
     self.assertEqual(s1.state, State.ON)
     s1.off()
     self.assertEqual(s1.state, State.OFF)
     self.assertEqual(s1.last_command, Command.OFF)
コード例 #58
0
 def test_delay_cancel_on_other_state(self):
     d1 = StateDevice()
     d2 = StateDevice(
         devices=d1,
         initial=State.OFF,
         delay={
             Attribute.COMMAND: Command.OFF,
             Attribute.SECS: 2,
         },
     )
     self.assertEqual(d2.state, State.UNKNOWN)
     d1.on()
     self.assertEqual(d2.state, State.ON)
     d1.off()
     self.assertEqual(d2.state, State.ON)
     d1.on()
     self.assertEqual(d2.state, State.ON)
     time.sleep(3)
     self.assertEqual(d2.state, State.ON)
コード例 #59
0
 def test_idle_timer(self):
     s1 = StateDevice()
     s2 = StateDevice(devices=s1,
                      idle={
                          Attribute.MAPPED: State.OFF,
                          Attribute.SECS: 2,
                      })
     s1.on()
     self.assertEqual(s2.state, State.ON)
     time.sleep(3)
     self.assertEqual(s2.state, State.OFF)
     s1.on()
     self.assertEqual(s2.state, State.ON)