def test_add_res_qed(self): text = ('<value val="good"><pair><state_id val="23" />' '<pair><union val="in_r"><state_id val="33" /></union>' '<string>Message</string>' '</pair></pair></value>') xml = ET.fromstring(text) res, _ = xp.res_from_xml('add', xml) self.assertEqual( res, { 'state_id': xp.StateID(23), 'closed_proof': { 'next_state_id': xp.StateID(33) }, 'message': 'Message' })
def test_edit_at_res_focused(self): text = ('<value val="good"><union val="in_r">' '<pair><state_id val="42" />' '<pair><state_id val="50" /><state_id val="60" /></pair>' '</pair></union></value>') xml = ET.fromstring(text) res, _ = xp.res_from_xml('edit_at', xml) self.assertEqual( res, { 'focused_proof': { 'proof_state_id': xp.StateID(42), 'qed_state_id': xp.StateID(50), 'old_focused': xp.StateID(60), } })
def test_fb_processed(self): text = ''' <feedback object="state" route="0"> <state_id val="42"/> <feedback_content val="processed"/> </feedback> ''' xml = ET.fromstring(text) res = xp.feedback_from_xml(xml) self.assertEqual(res, { 'type': 'processed', 'state_id': xp.StateID(42), 'content': {} })
def test_add_req(self): xml = xp.req_to_xml( 'add', { 'command': 'reflexivity.', 'edit_id': 3, 'state_id': xp.StateID(4), 'verbose': True }) out = ET.tostring(xml) self.assertEqual( out, b'<call val="Add">' b'<pair><pair><string>reflexivity.</string>' b'<int>3</int></pair><pair><state_id val="4" />' b'<bool val="true" /></pair></pair></call>')
def test_call(self, reader_mock, popen_mock): inst = CoqtopInstance() inst.spawn(['coqtop', '-ideslave']) xml_str = '<value val="good"><state_id val="42" /></value>' xml = ET.fromstring(xml_str) reader_mock.return_value.get_response.side_effect = [xml] inst.call('init', {}) tag, res = inst.get_response('init') write_mock = popen_mock.return_value.stdin.write write_mock.assert_called_once_with( b'<call val="Init"><option val="none" /></call>') self.assertEqual(tag, 'value') self.assertEqual(res, ({'init_state_id': xp.StateID(42)}, None))
def test_fb_fileloaded(self): text = ''' <feedback object="state" route="0"> <state_id val="42"/> <feedback_content val="fileloaded"> <string>Module</string> <string>Module.v</string> </feedback_content> </feedback> ''' xml = ET.fromstring(text) res = xp.feedback_from_xml(xml) self.assertEqual( res, { 'type': 'fileloaded', 'state_id': xp.StateID(42), 'content': { 'module': 'Module', 'vo_file_name': 'Module.v', } })
def test_fb_filedep_w_source(self): text = ''' <feedback object="state" route="0"> <state_id val="42"/> <feedback_content val="filedependency"> <option val="some"><string>s.v</string></option> <string>a.v</string> </feedback_content> </feedback> ''' xml = ET.fromstring(text) res = xp.feedback_from_xml(xml) self.assertEqual( res, { 'type': 'filedependency', 'state_id': xp.StateID(42), 'content': { 'dependency': 'a.v', 'source': xp.Some('s.v'), } })
def test_fb_errormsg(self): text = ''' <feedback object="state" route="0"> <state_id val="42"/> <feedback_content val="errormsg"> <loc start="3" stop="5"/> <string>Error</string> </feedback_content> </feedback> ''' xml = ET.fromstring(text) res = xp.feedback_from_xml(xml) self.assertEqual( res, { 'type': 'errormsg', 'state_id': xp.StateID(42), 'content': { 'loc': xp.Location(3, 5), 'message': xp.Message('error', 'Error') } })
def test_fb_message_noloc(self): text = ''' <feedback object="state" route="0"> <state_id val="42"/> <feedback_content val="message"> <message> <message_level val="info"/> <richpp>Message</richpp> </message> </feedback_content> </feedback> ''' xml = ET.fromstring(text) res = xp.feedback_from_xml(xml) self.assertEqual( res, { 'type': 'message', 'state_id': xp.StateID(42), 'content': { 'loc': None, 'message': xp.Message('info', 'Message'), } })
def test_fb_message(self): text = ''' <feedback object="state" route="0"> <state_id val="42"/> <feedback_content val="message"> <message> <message_level val="info"/> <option val="some"><loc start="3" stop="5"/></option> <richpp>Message</richpp> </message> </feedback_content> </feedback> ''' xml = ET.fromstring(text) res = xp.feedback_from_xml(xml) self.assertEqual( res, { 'type': 'message', 'state_id': xp.StateID(42), 'content': { 'loc': xp.Location(3, 5), 'message': xp.Message('info', 'Message') } })
def test_init_res(self): text = '<value val="good"><state_id val="42" /></value>' xml = ET.fromstring(text) res, _ = xp.res_from_xml('init', xml) self.assertEqual(res, {'init_state_id': xp.StateID(42)})
def test_edit_at_req(self): xml = xp.req_to_xml('edit_at', {'state_id': xp.StateID(12)}) out = ET.tostring(xml) self.assertEqual( out, b'<call val="Edit_at">' b'<state_id val="12" /></call>')