def test_create_commands(self): """ Test creating different types of commands 1. command with no end of line 2. simple command with no parameters 3. command with parameter """ # create the operator commands mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) # !!!!! cmd = protocol._build_no_eol_command('!!!!!') self.assertEqual(cmd, '!!!!!') # $met cmd = protocol._build_simple_command('$met') self.assertEqual(cmd, '$met' + NEWLINE) # $mnu cmd = protocol._build_simple_command('$mnu') self.assertEqual(cmd, '$mnu' + NEWLINE) # $run cmd = protocol._build_simple_command('$run') self.assertEqual(cmd, '$run' + NEWLINE) # parameters cmd = protocol._build_single_parameter_command('$ave', Parameter.MEASUREMENTS_PER_REPORTED, 14) self.assertEqual(cmd, '$ave 14' + NEWLINE) cmd = protocol._build_single_parameter_command('$m2d', Parameter.MEASUREMENT_2_DARK_COUNT, 34) self.assertEqual(cmd, '$m2d 34' + NEWLINE) cmd = protocol._build_single_parameter_command('$m1s', Parameter.MEASUREMENT_1_SLOPE, 23.1341) self.assertEqual(cmd, '$m1s 23.1341' + NEWLINE) cmd = protocol._build_single_parameter_command('$dat', Parameter.DATE, '041014') self.assertEqual(cmd, '$dat 041014' + NEWLINE) cmd = protocol._build_single_parameter_command('$clk', Parameter.TIME, '010034') self.assertEqual(cmd, '$clk 010034' + NEWLINE)
def test_measurements_per_reported_valid_range(self): """ Test that "Number of measurements for each reported value:" handles out of range data cleanly """ mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) # VALID strval = protocol._int_to_string_inrange(30) self.assertEqual(strval, '30') strval = protocol._int_to_string_inrange(255) self.assertEqual(strval, '255') # INVALID: throws exception with self.assertRaises(InstrumentParameterException): protocol._int_to_string_inrange(-1) with self.assertRaises(InstrumentParameterException): protocol._int_to_string_inrange(0) with self.assertRaises(InstrumentParameterException): protocol._int_to_string_inrange(355)
def test_run_wiper_response(self): """ Test response with no errors Test the run wiper response will raise an exception: 1. if the command is not recognized by 2. the status of the wiper is bad """ mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) # test response with no errors protocol._parse_run_wiper_response('mvs 1', None) # test response with 'unrecognized command' response = False try: protocol._parse_run_wiper_response('unrecognized command', None) except InstrumentCommandException: response = True finally: self.assertTrue(response) # test response with error response = False try: protocol._parse_run_wiper_response("mvs 0" + NEWLINE, None) except InstrumentCommandException: response = True finally: self.assertTrue(response)
def test_command_response(self): """ Test response with no errors Test the general command response will raise an exception if the command is not recognized by the instrument """ mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) # test response with no errors protocol._parse_command_response(SAMPLE_MNU_RESPONSE, None) # test response with 'unrecognized command' response = False try: protocol._parse_command_response('unrecognized command', None) except InstrumentCommandException: response = True finally: self.assertTrue(response) # test correct response with error response = False try: protocol._parse_command_response( SAMPLE_MET_RESPONSE + NEWLINE + 'unrecognized command', None) except InstrumentCommandException: response = True finally: self.assertTrue(response)
def test_discover_state(self): """ Test discovering the instrument in the COMMAND state and in the AUTOSAMPLE state """ mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) # COMMAND state, wait for particles returns an empty list protocol.wait_for_particles = Mock(return_value=[]) next_state, result = protocol._handler_unknown_discover() self.assertEqual(next_state, DriverProtocolState.COMMAND) # AUTOSAMPLE state, wait for particles returns one or more particles protocol.wait_for_particles = Mock(return_value=[1]) next_state, result = protocol._handler_unknown_discover() self.assertEqual(next_state, DriverProtocolState.AUTOSAMPLE)
def test_protocol_filter_capabilities(self): """ This tests driver filter_capabilities. Iterate through available capabilities, and verify that they can pass successfully through the filter. Test silly made up capabilities to verify they are blocked by filter. """ mock_callback = Mock(spec="PortAgentClient") protocol = Protocol(Prompt, NEWLINE, mock_callback) driver_capabilities = Capability().list() test_capabilities = Capability().list() # Add a bogus capability that will be filtered out. test_capabilities.append("BOGUS_CAPABILITY") # Verify "BOGUS_CAPABILITY was filtered out self.assertEquals(sorted(driver_capabilities), sorted(protocol._filter_capabilities(test_capabilities)))
def test_protocol_filter_capabilities(self): """ This tests driver filter_capabilities. Iterate through available capabilities, and verify that they can pass successfully through the filter. Test silly made up capabilities to verify they are blocked by filter. """ mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) driver_capabilities = Capability().list() test_capabilities = Capability().list() # Add a bogus capability that will be filtered out. test_capabilities.append("BOGUS_CAPABILITY") # Verify "BOGUS_CAPABILITY was filtered out self.assertEquals(sorted(driver_capabilities), sorted(protocol._filter_capabilities(test_capabilities)))
def test_command_response(self): """ Test response with no errors Test the general command response will raise an exception if the command is not recognized by the instrument """ mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) # test response with no errors protocol._parse_command_response(SAMPLE_MNU_RESPONSE, None) # test response with 'unrecognized command' response = False try: protocol._parse_command_response('unrecognized command', None) except InstrumentCommandException: response = True finally: self.assertTrue(response) # test correct response with error response = False try: protocol._parse_command_response(SAMPLE_MET_RESPONSE + NEWLINE + 'unrecognized command', None) except InstrumentCommandException: response = True finally: self.assertTrue(response)
def test_discover_state(self): """ Test discovering the instrument in the COMMAND state and in the AUTOSAMPLE state """ mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) #COMMAND state protocol._linebuf = SAMPLE_MNU_RESPONSE protocol._promptbuf = SAMPLE_MNU_RESPONSE next_state, next_agent_state = protocol._handler_unknown_discover() self.assertEqual(next_state, DriverProtocolState.COMMAND) self.assertEqual(next_agent_state, ResourceAgentState.IDLE) #AUTOSAMPLE state protocol._linebuf = SAMPLE_SAMPLE_RESPONSE protocol._promptbuf = SAMPLE_SAMPLE_RESPONSE next_state, next_agent_state = protocol._handler_unknown_discover() self.assertEqual(next_state, DriverProtocolState.AUTOSAMPLE) self.assertEqual(next_agent_state, ResourceAgentState.STREAMING)
def test_discover_state(self): """ Test discovering the instrument in the COMMAND state and in the AUTOSAMPLE state """ mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) # COMMAND state protocol._particle_dict = {} next_state, result = protocol._handler_unknown_discover() self.assertEqual(next_state, DriverProtocolState.COMMAND) # AUTOSAMPLE state protocol._particle_dict = {DataParticleType.FLORTD_SAMPLE: None} next_state, result = protocol._handler_unknown_discover() self.assertEqual(next_state, DriverProtocolState.AUTOSAMPLE)
def test_create_commands(self): """ Test creating different types of commands 1. command with no end of line 2. simple command with no parameters 3. command with parameter """ # create the operator commands mock_callback = Mock() protocol = Protocol(Prompt, NEWLINE, mock_callback) # !!!!! cmd = protocol._build_no_eol_command('!!!!!') self.assertEqual(cmd, '!!!!!') # $met cmd = protocol._build_simple_command('$met') self.assertEqual(cmd, '$met' + NEWLINE) # $mnu cmd = protocol._build_simple_command('$mnu') self.assertEqual(cmd, '$mnu' + NEWLINE) # $run cmd = protocol._build_simple_command('$run') self.assertEqual(cmd, '$run' + NEWLINE) # parameters cmd = protocol._build_single_parameter_command( '$ave', Parameter.MEASUREMENTS_PER_REPORTED, 14) self.assertEqual(cmd, '$ave 14' + NEWLINE) cmd = protocol._build_single_parameter_command( '$m2d', Parameter.MEASUREMENT_2_DARK_COUNT, 34) self.assertEqual(cmd, '$m2d 34' + NEWLINE) cmd = protocol._build_single_parameter_command( '$m1s', Parameter.MEASUREMENT_1_SLOPE, 23.1341) self.assertEqual(cmd, '$m1s 23.1341' + NEWLINE) cmd = protocol._build_single_parameter_command('$dat', Parameter.DATE, '041014') self.assertEqual(cmd, '$dat 041014' + NEWLINE) cmd = protocol._build_single_parameter_command('$clk', Parameter.TIME, '010034') self.assertEqual(cmd, '$clk 010034' + NEWLINE)