예제 #1
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_init_repeats_value(self):
     for repeats in range(-10, 10):
         if 0 <= repeats <= 7:
             noolite.NooLite(repeats=repeats)  # Supported values
         else:
             with self.assertRaisesRegex(ValueError,
                                         "between 0 .* 7",
                                         msg="Current value: %d" % repeats):
                 noolite.NooLite(repeats=repeats)
예제 #2
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_no_command_interval_after_long_pause(self):
     controller = noolite.NooLite(repeats=2)  # Interval 0.45s
     controller.load(3)
     time.sleep(0.5)  # Sleep more than 0.45s
     start = time.time()
     controller.load(3)
     self.assertLess(time.time() - start, 0.1)
예제 #3
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_device_kwargs_used_for_device_search(self):
     controller = noolite.NooLite(bus=1, address=12)
     controller.on(5)
     self.mock_usb_core_find.assert_called_once_with(idVendor=mock.ANY,
                                                     idProduct=mock.ANY,
                                                     bus=1,
                                                     address=12)
예제 #4
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_ch_str(self):
     controller = noolite.NooLite()
     self.exp_cmd[4] = 6
     self.exp_cmd[1] = 0x02
     controller.on("6")
     self.mock_device.ctrl_transfer.assert_called_once_with(
         mock.ANY, mock.ANY, mock.ANY, mock.ANY, self.exp_cmd)
예제 #5
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_ch_int(self):
     controller = noolite.NooLite()
     self.exp_cmd[4] = 5
     self.exp_cmd[1] = 0x00
     controller.off(5)
     self.mock_device.ctrl_transfer.assert_called_once_with(
         mock.ANY, mock.ANY, mock.ANY, mock.ANY, self.exp_cmd)
예제 #6
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_command_interval_is_actually_applied(self):
     for repeats, exp_duration in ((0, 0.3), (1, 0.6), (2, 0.9)):
         controller = noolite.NooLite(repeats=repeats)
         start = time.time()
         for _ in range(3):
             controller.load(3)
         self.assertAlmostEqual(time.time() - start, exp_duration, places=1)
예제 #7
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_init_channals_deprecated(self):
     with warnings.catch_warnings(record=True) as warns:
         warnings.simplefilter('always')
         noolite.NooLite(channals=8)
         self.assertEqual(len(warns), 1)
         self.assertTrue(issubclass(warns[-1].category, DeprecationWarning))
         self.assertIn("deprecated", str(warns[-1].message))
예제 #8
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_NooLiteDeviceLookupErr(self):
     controller = noolite.NooLite(idVendor=12345, idProduct=54321)
     self.mock_usb_core_find.return_value = None
     with self.assertRaises(noolite.NooLiteDeviceLookupErr) as err:
         controller.off(5)
     self.assertIsInstance(err.exception, noolite.NooLiteErr)
     self.assertIn('idVendor=12345', err.exception.value)
     self.assertIn('idProduct=54321', err.exception.value)
예제 #9
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_command_interval_depends_on_repeats(self):
     exp_results = ((0, 0.15), (1, 0.30), (2, 0.45), (3, 0.60), (4, 0.75),
                    (5, 0.90), (6, 1.05), (7, 1.20))
     for repeats, exp_interval in exp_results:
         self.mock_device.ctrl_transfer.reset_mock()
         controller = noolite.NooLite(repeats=repeats)
         self.assertAlmostEqual(controller._command_interval,
                                exp_interval,
                                places=15)
예제 #10
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_unbind(self):
     controller = noolite.NooLite()
     self.exp_cmd[4] = 7
     self.exp_cmd[1] = 0x09
     self.exp_cmd[2] = 0x00
     self.exp_cmd[5] = 0x00
     controller.unbind(7)
     self.mock_device.ctrl_transfer.assert_called_once_with(
         mock.ANY, mock.ANY, mock.ANY, mock.ANY, self.exp_cmd)
예제 #11
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_commands_return_zero_to_indicate_success(self):
     for method in ('on', 'off', 'switch', 'set', 'save', 'load', 'bind',
                    'unbind'):
         controller = noolite.NooLite()
         if method == 'set':
             return_value = getattr(controller, method)(7, 42)
         else:
             return_value = getattr(controller, method)(7)
         self.assertEqual(return_value, 0)
예제 #12
0
 def test_set_zero(self):
     switcher = noolite.NooLite(tests=True)
     value = 0
     cmd = init_cmd
     cmd[4] = 7
     cmd[2] = 0x01
     cmd[1] = 0x06
     cmd[5] = 0
     self.assertEqual(switcher.set(7, value), cmd)
예제 #13
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_part_of_command_interval_after_short_pause(self):
     controller = noolite.NooLite(repeats=2)  # Interval 0.45s
     controller.load(3)
     time.sleep(0.2)  # Sleep about half of the 0.45s interval
     start = time.time()
     controller.load(3)
     remaining_interval = time.time() - start
     self.assertGreater(remaining_interval, 0.2)
     self.assertLess(remaining_interval, 0.3)
예제 #14
0
 def test_set_str(self):
     switcher = noolite.NooLite(tests=True)
     value = "70"
     cmd = init_cmd
     cmd[4] = 7
     cmd[2] = 0x01
     cmd[1] = 0x06
     cmd[5] = 35 + int(value)
     self.assertEqual(switcher.set(7, value), cmd)
예제 #15
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_set_zero_level(self):
     controller = noolite.NooLite()
     value = 0
     self.exp_cmd[4] = 7
     self.exp_cmd[1] = 0x06
     self.exp_cmd[2] = 0x01
     self.exp_cmd[5] = 0
     controller.set(7, value)
     self.mock_device.ctrl_transfer.assert_called_once_with(
         mock.ANY, mock.ANY, mock.ANY, mock.ANY, self.exp_cmd)
예제 #16
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_NooLiteDeviceLookupErr_with_device_kwargs(self):
     controller = noolite.NooLite(idVendor=12345,
                                  idProduct=54321,
                                  bDeviceClass=7,
                                  bDeviceProtocol=1)
     self.mock_usb_core_find.return_value = None
     with self.assertRaises(noolite.NooLiteDeviceLookupErr) as err:
         controller.off(5)
     self.assertIn('idVendor=12345', err.exception.value)
     self.assertIn('idProduct=54321', err.exception.value)
     self.assertIn('bDeviceClass=7', err.exception.value)
     self.assertIn('bDeviceProtocol=1', err.exception.value)
예제 #17
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_repeats_being_correctly_sent(self):
     exp_results = ((0, 0x10), (1, 0x30), (2, 0x50), (3, 0x70), (4, 0x90),
                    (5, 0xb0), (6, 0xd0), (7, 0xf0))
     for repeats, exp_mode in exp_results:
         self.mock_device.ctrl_transfer.reset_mock()
         controller = noolite.NooLite(repeats=repeats)
         self.exp_cmd[0] = exp_mode  # mode (bit rate and repeats)
         self.exp_cmd[4] = 4  # channel
         self.exp_cmd[1] = 0x08  # save scenario command
         controller.save(4)
         self.mock_device.ctrl_transfer.assert_called_once_with(
             mock.ANY, mock.ANY, mock.ANY, mock.ANY, self.exp_cmd)
예제 #18
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_internal_representation(self):
     controller = noolite.NooLite(channels=16,
                                  idVendor=12345,
                                  idProduct=54321,
                                  bDeviceClass=7,
                                  bDeviceProtocol=1)
     string_representation = repr(controller)
     self.assertIn("NooLite", string_representation)
     self.assertIn("16 channels", string_representation)
     self.assertIn("idVendor=12345", string_representation)
     self.assertIn("idProduct=54321", string_representation)
     self.assertIn("bDeviceClass=7", string_representation)
     self.assertIn("bDeviceProtocol=1", string_representation)
예제 #19
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_string_representation(self):
     controller = noolite.NooLite(channels=1,
                                  idVendor=12345,
                                  idProduct=54321,
                                  bDeviceClass=7,
                                  bDeviceProtocol=1)
     string_representation = str(controller)
     self.assertIn("NooLite", string_representation)
     self.assertIn("1 channel", string_representation)
     self.assertNotIn("idVendor", string_representation)
     self.assertNotIn("idProduct", string_representation)
     self.assertNotIn("bDeviceClass", string_representation)
     self.assertNotIn("bDeviceProtocol", string_representation)
예제 #20
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_simple_cmds_reset_format_and_data_bytes_after_set_cmd_call(self):
     level = 67
     for method in ('on', 'off', 'switch', 'save', 'load', 'bind',
                    'unbind'):
         controller = noolite.NooLite()
         # Call set method
         controller.set(7, level)
         act_cmd = self.mock_device.ctrl_transfer.call_args[0][-1]
         self.assertEqual(act_cmd[1], 0x06)  # Command
         self.assertEqual(act_cmd[2], 0x01)  # Format
         self.assertEqual(act_cmd[5], 35 + level)  # Level
         act_cmd = self.mock_device.ctrl_transfer.reset_mock()
         # Call non-set method
         getattr(controller, method)(7)
         act_cmd = self.mock_device.ctrl_transfer.call_args[0][-1]
         self.assertNotEqual(act_cmd[1], 0x06)  # Command
         self.assertEqual(act_cmd[2], 0x00)  # Format
         self.assertEqual(act_cmd[5], 0x00)  # Level
         act_cmd = self.mock_device.ctrl_transfer.reset_mock()
예제 #21
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_set_configuration_is_called(self):
     controller = noolite.NooLite()
     controller.bind(3)
     self.mock_device.set_configuration.assert_called_once_with()
예제 #22
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_kernel_driver_is_not_explicitly_detached_if_not_active(self):
     controller = noolite.NooLite()
     self.mock_device.is_kernel_driver_active.return_value = False
     controller.switch(4)
     self.assertFalse(self.mock_device.detach_kernel_driver.called)
예제 #23
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_kernel_driver_is_detached_if_active(self):
     controller = noolite.NooLite()
     self.mock_device.is_kernel_driver_active.return_value = True
     controller.switch(4)
     self.mock_device.detach_kernel_driver.assert_called_once_with(0)
예제 #24
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_init_channals_deprecated_but_still_active(self):
     with warnings.catch_warnings():
         warnings.simplefilter('ignore')
         controller = noolite.NooLite(channals=16)
         self.assertEqual(controller._channels, 16)
예제 #25
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_init_default(self):
     controller = noolite.NooLite()
     self.assertEqual(controller._channels, 8)
     self.assertEqual(controller._idVendor, 0x16c0)
     self.assertEqual(controller._idProduct, 0x05df)
     self.assertEqual(controller._device_kwargs, {})
예제 #26
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_init_with_device_kwargs(self):
     controller = noolite.NooLite(bus=1, address=21)
     self.assertEqual(controller._device_kwargs, dict(bus=1, address=21))
예제 #27
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_NooLiteDeviceLookupErr_with_custom_match_device_kwarg(self):
     controller = noolite.NooLite(custom_match=lambda dev: dev.bus == 2)
     self.mock_usb_core_find.return_value = None
     with self.assertRaises(noolite.NooLiteDeviceLookupErr) as err:
         controller.off(5)
     self.assertIn('custom_match=<function', err.exception.value)
예제 #28
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_no_command_interval_on_first_call(self):
     controller = noolite.NooLite(repeats=7)  # Interval 1.2s
     start = time.time()
     controller.load(3)
     self.assertLess(time.time() - start, 0.1)
예제 #29
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_init_channals_deprecated_but_takes_precedence_over_channels(self):
     with warnings.catch_warnings():
         warnings.simplefilter('ignore')
         controller = noolite.NooLite(channels=16, channals=32)
         self.assertEqual(controller._channels, 32)
예제 #30
0
파일: tests.py 프로젝트: ebloved/pyNooLite
 def test_idVendor_and_idProduct_used_for_device_search(self):
     controller = noolite.NooLite(idVendor=12345, idProduct=54321)
     controller.on(4)
     self.mock_usb_core_find.assert_called_once_with(idVendor=12345,
                                                     idProduct=54321)