Example #1
0
 def test_handle_restore_timer(self):
     pm = ParenMatch(self.editwin)
     pm.restore_event = Mock()
     pm.handle_restore_timer(0)
     self.assertTrue(pm.restore_event.called)
     pm.restore_event.reset_mock()
     pm.handle_restore_timer(1)
     self.assertFalse(pm.restore_event.called)
Example #2
0
    def test_paren_expression(self):
        """
        Test ParenMatch with 'expression' style.
        """
        text = self.text
        pm = ParenMatch(self.editwin)
        pm.set_style('expression')

        text.insert('insert', 'def foobar(a, b')
        pm.flash_paren_event('event')
        self.assertIn('<<parenmatch-check-restore>>', text.event_info())
        self.assertTupleEqual(text.tag_prevrange('paren', 'end'),
                             ('1.10', '1.15'))
        text.insert('insert', ')')
        pm.restore_event()
        self.assertNotIn('<<parenmatch-check-restore>>', text.event_info())
        self.assertEqual(text.tag_prevrange('paren', 'end'), ())

        # paren_closed_event can only be tested as below
        pm.paren_closed_event('event')
        self.assertTupleEqual(text.tag_prevrange('paren', 'end'),
                                                ('1.10', '1.16'))
Example #3
0
    def test_paren_expression(self):
        """
        Test ParenMatch with 'expression' style.
        """
        text = self.text
        pm = ParenMatch(self.editwin)
        pm.set_style("expression")

        text.insert("insert", "def foobar(a, b")
        pm.flash_paren_event("event")
        self.assertIn("<<parenmatch-check-restore>>", text.event_info())
        self.assertTupleEqual(text.tag_prevrange("paren", "end"), ("1.10", "1.15"))
        text.insert("insert", ")")
        pm.restore_event()
        self.assertNotIn("<<parenmatch-check-restore>>", text.event_info())
        self.assertEqual(text.tag_prevrange("paren", "end"), ())

        # paren_closed_event can only be tested as below
        pm.paren_closed_event("event")
        self.assertTupleEqual(text.tag_prevrange("paren", "end"), ("1.10", "1.16"))
Example #4
0
    def test_paren_default(self):
        """
        Test ParenMatch with 'default' style.
        """
        text = self.text
        pm = ParenMatch(self.editwin)
        pm.set_style('default')

        text.insert('insert', 'def foobar(a, b')
        pm.flash_paren_event('event')
        self.assertIn('<<parenmatch-check-restore>>', text.event_info())
        self.assertTupleEqual(text.tag_prevrange('paren', 'end'),
                             ('1.10', '1.11'))
        text.insert('insert', ')')
        pm.restore_event()
        self.assertNotIn('<<parenmatch-check-restore>>', text.event_info())
        self.assertEqual(text.tag_prevrange('paren', 'end'), ())
Example #5
0
    def test_paren_default(self):
        """
        Test ParenMatch with 'default' style.
        """
        text = self.text
        pm = ParenMatch(self.editwin)
        pm.set_style("default")

        text.insert("insert", "def foobar(a, b")
        pm.flash_paren_event("event")
        self.assertIn("<<parenmatch-check-restore>>", text.event_info())
        self.assertTupleEqual(text.tag_prevrange("paren", "end"), ("1.10", "1.11"))
        text.insert("insert", ")")
        pm.restore_event()
        self.assertNotIn("<<parenmatch-check-restore>>", text.event_info())
        self.assertEqual(text.tag_prevrange("paren", "end"), ())
Example #6
0
    def test_paren_corner(self):
        """
        Test corner cases in flash_paren_event and paren_closed_event.

        These cases force conditional expression and alternate paths.
        """
        text = self.text
        pm = ParenMatch(self.editwin)

        text.insert('insert', '# this is a commen)')
        self.assertIsNone(pm.paren_closed_event('event'))

        text.insert('insert', '\ndef')
        self.assertIsNone(pm.flash_paren_event('event'))
        self.assertIsNone(pm.paren_closed_event('event'))

        text.insert('insert', ' a, *arg)')
        self.assertIsNone(pm.paren_closed_event('event'))