def test_set_state(self): new_state = {StateKey.POSITION: 262} self.stream_handle = StringIO(WfpParserUnitTestCase.TEST_DATA) self.parser = WfpParser(self.config, self.position, self.stream_handle, self.pos_callback, self.pub_callback) result = self.parser.get_records(1) self.assert_result(result, 213, self.particle_a) result = self.parser.get_records(1) self.assert_result(result, 262, self.particle_b) result = self.parser.get_records(1) self.assert_result(result, 311, self.particle_c) result = self.parser.get_records(1) self.assert_result(result, 360, self.particle_d) self.parser.set_state(new_state) # # Oddly the position is off by 1 after repositioning. # puzzling, but seems harmless. # result = self.parser.get_records(1) self.assert_result(result, 312, self.particle_c) result = self.parser.get_records(1) self.assert_result(result, 362, self.particle_d)
def test_happy_path(self): """ Test the happy path of operations where the parser takes the input and spits out a valid data particle given the stream. """ self.stream_handle = StringIO(WfpParserUnitTestCase.TEST_DATA) self.parser = WfpParser( self.config, self.position, self.stream_handle, self.pos_callback, self.pub_callback) # last one is the link to the data source result = self.parser.get_records(1) self.assert_result(result, 213, self.particle_a) result = self.parser.get_records(1) self.assert_result(result, 262, self.particle_b) result = self.parser.get_records(1) self.assert_result(result, 311, self.particle_c) result = self.parser.get_records(1) self.assert_result(result, 360, self.particle_d) # no data left, dont move the position result = self.parser.get_records(1) self.assertEqual(result, []) self.assertEqual(self.parser._state[StateKey.POSITION], 360) self.assertEqual(self.position_callback_value[StateKey.POSITION], 360) self.assert_(isinstance(self.publish_callback_value, list)) self.assertEqual(self.publish_callback_value[0], self.particle_d)
def test_bad_data(self): """ There's a bad sample in the data! Ack! Skip it! """ self.stream_handle = StringIO(WfpParserUnitTestCase.BAD_TEST_DATA) self.parser = WfpParser(self.config, self.position, self.stream_handle, self.pos_callback, self.pub_callback) result = self.parser.get_records(1) log.error("RESULT = " + str(result)) self.assert_result(result, 243, self.particle_b)
def test_long_stream(self): self.stream_handle = StringIO(WfpParserUnitTestCase.LONG_DATA) self.parser = WfpParser(self.config, self.position, self.stream_handle, self.pos_callback, self.pub_callback) result = self.parser.get_records(44) self.assertEqual(result[-1], self.particle_z) self.assertEqual(self.parser._state[StateKey.POSITION], 703) self.assertEqual(self.position_callback_value[StateKey.POSITION], 703) self.assertEqual(self.publish_callback_value[-1], self.particle_z)
def test_mid_state_start(self): new_state = {StateKey.POSITION: 313} self.stream_handle = StringIO(WfpParserUnitTestCase.TEST_DATA) self.parser = WfpParser(self.config, new_state, self.stream_handle, self.pos_callback, self.pub_callback) # # Oddly the position is off by 1 after repositioning. # puzzling, but seems harmless. # result = self.parser.get_records(1) self.assert_result(result, 362, self.particle_d)
def test_get_many(self): self.stream_handle = StringIO(WfpParserUnitTestCase.TEST_DATA) self.parser = WfpParser(self.config, self.position, self.stream_handle, self.pos_callback, self.pub_callback) result = self.parser.get_records(2) self.assertEqual(result, [self.particle_a, self.particle_b]) self.assertEqual(self.parser._state[StateKey.POSITION], 262) self.assertEqual(self.position_callback_value[StateKey.POSITION], 262) self.assertEqual(self.publish_callback_value[0], self.particle_a) self.assertEqual(self.publish_callback_value[1], self.particle_b)