def test_control_mode_1_read_write(self): """Registers read/written when using control mode 1 methods.""" rpm_value = 500 for motor_port_registers in MotorControlRegisters: motor_port_name = motor_port_registers.name motor_registers = motor_port_registers.value mode_1_register = motor_registers[MotorRegisterTypes.MODE_1_RPM] # create instance controller = EncoderMotorController(port=motor_port_name) controller.set_control_mode = Mock() controller.control_mode = Mock() controller.control_mode.return_value = MotorControlModes.MODE_1 # setup r/w mocks write_word_mock = controller._mcu_device.write_word = Mock() read_signed_word_mock = controller._mcu_device.read_signed_word = Mock( ) read_signed_word_mock.return_value = rpm_value # test controller.set_rpm_control(rpm_value) write_word_mock.assert_called_with(mode_1_register, rpm_value, little_endian=True, signed=True) self.assertEquals(controller.rpm_control(), rpm_value) read_signed_word_mock.assert_called_with(mode_1_register, little_endian=True)
def test_control_mode_read_write(self): """Registers read/written when setting/reading control modes from MCU.""" for motor_port_registers in MotorControlRegisters: motor_port_name = motor_port_registers.name motor_registers = motor_port_registers.value control_mode_register = motor_registers[ MotorRegisterTypes.CONTROL_MODE] for control_mode in MotorControlModes: # create instance controller = EncoderMotorController(port=motor_port_name) # setup r/w mocks write_byte_mock = controller._mcu_device.write_byte = Mock() read_unsigned_byte_mock = ( controller._mcu_device.read_unsigned_byte) = Mock() read_unsigned_byte_mock.return_value = control_mode.value # test controller.set_control_mode(control_mode) write_byte_mock.assert_called_with(control_mode_register, control_mode.value) self.assertEquals(controller.control_mode(), control_mode) read_unsigned_byte_mock.assert_called_with( control_mode_register)
def test_control_mode_2_read_write(self): """Registers read/written when using control mode 2 methods.""" rpm_value = 500 rotations_value = 10 # from rpm and rotations values, calculate byte values to use in mocks rpm_and_rotations_in_bytes = split_into_bytes( rotations_value, 2, signed=True, little_endian=True) + split_into_bytes( rpm_value, 2, signed=True, little_endian=True) rpm_and_rotations_read = join_bytes(rpm_and_rotations_in_bytes) for motor_port_registers in MotorControlRegisters: motor_port_name = motor_port_registers.name motor_registers = motor_port_registers.value mode_1_register = motor_registers[ MotorRegisterTypes.MODE_2_RPM_WITH_ROTATIONS] # create instance controller = EncoderMotorController(port=motor_port_name) controller.set_control_mode = Mock() controller.control_mode = Mock() controller.control_mode.return_value = MotorControlModes.MODE_2 # setup r/w mocks write_n_bytes_mock = controller._mcu_device.write_n_bytes = Mock() read_n_unsigned_bytes_mock = ( controller._mcu_device.read_n_unsigned_bytes) = Mock() read_n_unsigned_bytes_mock.return_value = rpm_and_rotations_read # test controller.set_rpm_with_rotations(rpm_value, rotations_value) write_n_bytes_mock.assert_called_with(mode_1_register, rpm_and_rotations_in_bytes) self.assertEquals(controller.rpm_with_rotations(), (rpm_value, rotations_value)) read_n_unsigned_bytes_mock.assert_called_with(mode_1_register, 4, little_endian=True)