Example #1
0
 def setUp(self):
     self.server = LantopEmulator(resp_dict=TEST_DATA)
     self.server.start()
     self.lt = Lantop(*self.server.server_address)
Example #2
0
class LantopTest(unittest.TestCase):

    def setUp(self):
        self.server = LantopEmulator(resp_dict=TEST_DATA)
        self.server.start()
        self.lt = Lantop(*self.server.server_address)

    def tearDown(self):
        self.lt.close()
        self.server.stop()

    def test_get_name(self):
        name = self.lt.get_name()
        self.assertEqual(TEST_DATA[b'K024E47'][1], name)

    def test_set_name(self):
        self.lt.set_name('abcdefghijklmnopqrst')  # max length
        self.assertEqual(TEST_DATA[b'K174E53'][1], self.server.last_msg)

    def test_get_pin(self):
        pin = self.lt.get_pin()
        self.assertEqual(TEST_DATA[b'T026250'][1], pin)

    def test_set_pin(self):
        self.lt.set_pin('1234')
        self.assertEqual(TEST_DATA[b'T046150'][1], self.server.last_msg)

    def test_set_pin_wrong1(self):
        with self.assertRaises(LantopError) as cm:
            self.lt.set_pin('12345')
        self.assertEqual('PIN must be exactly 4 numbers', str(cm.exception))

    def test_set_pin_wrong2(self):
        with self.assertRaises(LantopError) as cm:
            self.lt.set_pin('abcd')
        self.assertEqual('Only numeric pin allowed', str(cm.exception))

    def test_set_name_too_long(self):
        with self.assertRaises(LantopError) as cm:
            self.lt.set_name(' ' * 21)
        self.assertEqual('Name too long', str(cm.exception))

    def test_get_info(self):
        dev_type, serial = self.lt.get_info()
        self.assertEqual(TEST_DATA[b'T02624C'][1][0], dev_type)
        self.assertEqual(TEST_DATA[b'T02624C'][1][1], serial)

    def test_get_swv_ersion(self):
        res = self.lt.get_sw_version()
        self.assertEqual(TEST_DATA[b'K0156'][1], res)

    def test_get_time(self):
        time = self.lt.get_time()
        self.assertEqual(TEST_DATA[b'T02625A'][1], time)

    def test_set_time(self):
        self.lt.set_time(datetime(2011, 12, 13, 14, 15, 16))
        self.assertEqual(TEST_DATA[b'T08615A'][1], self.server.last_msg)

    def test_get_states(self):
        states = self.lt.get_states()
        self.assertEqual(TEST_DATA[b'T02624B'][1], states)

    def test_set_state_on(self):
        self.lt.set_state(3, 'on')
        self.assertEqual(TEST_DATA[b'T04614B'][1] + b'0302',
                         self.server.last_msg)

    def test_set_state_off(self):
        self.lt.set_state(2, 'off')
        self.assertEqual(TEST_DATA[b'T04614B'][1] + b'0201',
                         self.server.last_msg)

    def test_set_state_auto(self):
        self.lt.set_state(0, 'auto')
        self.assertEqual(TEST_DATA[b'T04614B'][1] + b'0003',
                         self.server.last_msg)

    def test_set_state_wrong(self):
        with self.assertRaises(LantopError) as cm:
            self.lt.set_state(3, 'foo')
        self.assertEqual('Cannot parse state', str(cm.exception))

    def test_set_state_duration_on(self):
        self.lt.set_state(3, 'on', duration=timedelta(minutes=1, seconds=28))
        self.assertEqual(TEST_DATA[b'T08614B'][1], self.server.last_msg)

    def test_get_channel_name(self):
        name = self.lt.get_channel_name(0)
        self.assertEqual(b'T03624E00', self.server.last_msg)
        self.assertEqual(TEST_DATA[b'T03624E'][1], name)

    def test_get_channel_stats(self):
        name = self.lt.get_channel_stats(2)
        self.assertEqual(b'T03624202', self.server.last_msg)
        self.assertEqual(TEST_DATA[b'T036242'][1], name)

    def test_reset_channel_stats(self):
        self.lt.reset_channel_stats(3)
        self.assertEqual(TEST_DATA[b'T046142'][1] + b'0300',
                         self.server.last_msg)