Esempio n. 1
0
 def test_bracket(self):
     w = repl.REPL(None)
     self.assertEqual(w.brackets(5), tuple(w.state['stakes'][0:2]))
     self.assertEqual(w.brackets(len(w.buf)),
                      (w.state['stakes'][-1], (None, None)))
     self.assertEqual(w.brackets(0), tuple(w.state['stakes'][0:2]))
     l = len(w.buf)
     w.cursor.insert('data')
     m = len(w.buf)
     w.output('output')
     OUTPUT = [repl.OUTPUT_START, repl.OUTPUT_END]
     INPUT = [repl.OUTPUT_END, repl.OUTPUT_START]
     TAIL = [repl.OUTPUT_END, None]
     self.assertEqual([x[1] for x in w.brackets(0)], OUTPUT)
     self.assertEqual([x[1] for x in w.brackets(1)], OUTPUT)
     self.assertEqual([x[1] for x in w.brackets(l)], INPUT)
     self.assertEqual([x[1] for x in w.brackets(l + 1)], INPUT)
     self.assertEqual([x[1] for x in w.brackets(m)], OUTPUT)
     self.assertEqual([x[1] for x in w.brackets(m + 1)], OUTPUT)
     self.assertEqual([x[1] for x in w.brackets(len(w.buf))], TAIL)
     w.cursor.point = len(w.buf)
     self.assertTrue(w.writable(0))
     w.cursor.point = l
     self.assertTrue(w.writable(0))
     w.cursor.point = 0
     self.assertFalse(w.writable(0))
     w.cursor.point = l
     self.assertTrue(w.writable(0))
     w.toggle_writable()
     self.assertFalse(w.writable(0))
Esempio n. 2
0
    def test_go(self):
        w = repl.REPL(mocks.FE())
        w.log.debug('A: %s', repr(w.buf[:]))
        w.insert('2 + 2')
        w.log.debug('B: %s', repr(w.buf[:]))
        earlier = w.cursor.point
        w.go()
        w.log.debug('C: %s', repr(w.buf[:]))
        result = '\n' + str(4) + '\n' + w.state['ps1']
        self.assertEqual(w.buf[-len(result):], result)
        self.assertEqual(w.state['in'][0], '2 + 2')
        self.assertEqual(w.state['out'][0], 4)

        t = 'def flurb():'
        w.insert(t)
        w.log.debug('D: %s', repr(w.buf[:]))
        w.go()
        self.assertEqual(w.context._message, 'incomplete input')
        w.log.debug('E before go2: %s', repr(w.buf[:]))
        w.go2()
        w.log.debug('F after go2: %s', repr(w.buf[:]))
        self.assertEqual(w.buf[-(len(t) + 1):], t + '\n')

        w.cursor.point = earlier
        w.go()
        result = result + t + '\n'
        self.assertEqual(w.buf[-len(result):], result)
        self.assertEqual(w.state['in'][1], '2 + 2')
        self.assertEqual(w.state['out'][1], 4)
Esempio n. 3
0
 def test_output0(self):
     w = repl.REPL(None)
     self.assertEqual(len(w.state['stakes']), 2)
     self.assertEqual(w.state['stakes'][0][1], repl.OUTPUT_START)
     self.assertEqual(w.state['stakes'][1][1], repl.OUTPUT_END)
     w.cursor.insert('foo\n')
     w.output('bar ')
     w.output('baz: ')
     self.assertEqual(len(w.state['stakes']), 4)
     self.assertEqual(w.state['stakes'][2][1], repl.OUTPUT_START)
     self.assertEqual(w.state['stakes'][3][1], repl.OUTPUT_END)
Esempio n. 4
0
 def test_func(self):
     w = repl.REPL(mocks.FE())
     w.insert('def func():\n return 2+2\n')
     w.go()
     w.insert('func()')
     w.go()
     self.assertEqual(w.state['out'][1], 4)
     w.insert('''def fib(n):
         if n < 2:
             return n
         return fib(n - 2) + fib(n - 1)\n''')
     w.go()
     w.insert('fib(6)')
     w.go()
     self.assertEqual(w.state['out'][3], 8)
Esempio n. 5
0
 def test_bol(self):
     w = repl.REPL(None)
     w.insert('foo')
     w.beginning_of_line()
     bol = w.cursor.point
     self.assertEqual(w.buf[bol:], w.state['ps1'] + 'foo')
     w.end_of_line()
     w.electric_beginning_of_line()
     self.assertEqual(w.cursor.point, bol)
     w.end_of_line()
     w.electric_beginning_of_line(interactive=True)
     self.assertEqual(w.cursor.point, bol + len(w.state['ps1']))
     w.electric_beginning_of_line(interactive=True)
     self.assertEqual(w.cursor.point, bol)
     w.electric_beginning_of_line(interactive=True)
     self.assertEqual(w.cursor.point, bol)
Esempio n. 6
0
    def test_go(self):
        w = repl.REPL(mocks.FE())
        w.cursor.insert('2 + 2')
        earlier = w.cursor.point
        w.go()
        result = '\n' + str(4) + '\n' + w.ps1
        self.assertEqual(w.buf[-len(result):], result)
        self.assertEqual(w.in_[0], '2 + 2')
        self.assertEqual(w.out_[0], 4)

        t = 'def flurb():'
        w.cursor.insert(t)
        w.go()
        self.assertEqual(w.context._message, 'incomplete input')
        w.go2()
        self.assertEqual(w.buf[-(len(t) + 1):], t + '\n')

        w.cursor.point = earlier
        w.go()
        result = result + t + '\n'
        self.assertEqual(w.buf[-len(result):], result)
        self.assertEqual(w.in_[1], '2 + 2')
        self.assertEqual(w.out_[1], 4)
Esempio n. 7
0
 def test_result(self):
     w = repl.REPL(mocks.FE())
     w.insert('import sys')
     w.go()
     self.assertEqual(w.state['out'][0], None)
Esempio n. 8
0
 def test_title(self):
     w = repl.REPL(None)
     self.assertRegex(w.title(), r'^REPL\[\d\]+ \[0\]$')