Пример #1
0
 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'
         })
Пример #2
0
 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),
             }
         })
Пример #3
0
    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': {}
        })
Пример #4
0
 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>')
Пример #5
0
    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))
Пример #6
0
    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',
                }
            })
Пример #7
0
    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'),
                }
            })
Пример #8
0
    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')
                }
            })
Пример #9
0
    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'),
                }
            })
Пример #10
0
    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')
                }
            })
Пример #11
0
 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)})
Пример #12
0
 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>')