You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
4.9 KiB
149 lines
4.9 KiB
# -*- coding: UTF-8 -*-
|
|
# Copyright (C) 2007 Jörgen Stenarson. <>
|
|
from __future__ import print_function, unicode_literals, absolute_import
|
|
|
|
import sys, unittest
|
|
sys.path.append ('../..')
|
|
#from pyreadline.modes.vi import *
|
|
#from pyreadline import keysyms
|
|
from pyreadline.lineeditor import lineobj
|
|
from pyreadline.lineeditor.history import LineHistory
|
|
import pyreadline.lineeditor.history as history
|
|
|
|
import pyreadline.logger
|
|
pyreadline.logger.sock_silent=False
|
|
from pyreadline.logger import log
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
RL=lineobj.ReadLineTextBuffer
|
|
|
|
class Test_prev_next_history(unittest.TestCase):
|
|
t = "test text"
|
|
|
|
def setUp(self):
|
|
self.q = q = LineHistory()
|
|
for x in ["aaaa", "aaba", "aaca", "akca", "bbb", "ako"]:
|
|
q.add_history(RL(x))
|
|
|
|
def test_previous_history (self):
|
|
hist = self.q
|
|
assert hist.history_cursor == 6
|
|
l = RL("")
|
|
hist.previous_history(l)
|
|
assert l.get_line_text() == "ako"
|
|
hist.previous_history(l)
|
|
assert l.get_line_text() == "bbb"
|
|
hist.previous_history(l)
|
|
assert l.get_line_text() == "akca"
|
|
hist.previous_history(l)
|
|
assert l.get_line_text() == "aaca"
|
|
hist.previous_history(l)
|
|
assert l.get_line_text() == "aaba"
|
|
hist.previous_history(l)
|
|
assert l.get_line_text() == "aaaa"
|
|
hist.previous_history(l)
|
|
assert l.get_line_text() == "aaaa"
|
|
|
|
def test_next_history (self):
|
|
hist=self.q
|
|
hist.beginning_of_history()
|
|
assert hist.history_cursor==0
|
|
l=RL("")
|
|
hist.next_history(l)
|
|
assert l.get_line_text()=="aaba"
|
|
hist.next_history(l)
|
|
assert l.get_line_text()=="aaca"
|
|
hist.next_history(l)
|
|
assert l.get_line_text()=="akca"
|
|
hist.next_history(l)
|
|
assert l.get_line_text()=="bbb"
|
|
hist.next_history(l)
|
|
assert l.get_line_text()=="ako"
|
|
hist.next_history(l)
|
|
assert l.get_line_text()=="ako"
|
|
|
|
class Test_prev_next_history(unittest.TestCase):
|
|
t = "test text"
|
|
|
|
def setUp(self):
|
|
self.q = q = LineHistory()
|
|
for x in ["aaaa","aaba","aaca","akca","bbb","ako"]:
|
|
q.add_history(RL(x))
|
|
|
|
def test_history_search_backward (self):
|
|
q = LineHistory()
|
|
for x in ["aaaa","aaba","aaca"," aacax","akca","bbb","ako"]:
|
|
q.add_history(RL(x))
|
|
a=RL("aa",point=2)
|
|
for x in ["aaca","aaba","aaaa","aaaa"]:
|
|
res=q.history_search_backward(a)
|
|
assert res.get_line_text()==x
|
|
|
|
def test_history_search_forward (self):
|
|
q = LineHistory()
|
|
for x in ["aaaa","aaba","aaca"," aacax","akca","bbb","ako"]:
|
|
q.add_history(RL(x))
|
|
q.beginning_of_history()
|
|
a=RL("aa",point=2)
|
|
for x in ["aaba","aaca","aaca"]:
|
|
res=q.history_search_forward(a)
|
|
assert res.get_line_text()==x
|
|
|
|
class Test_history_search_incr_fwd_backwd(unittest.TestCase):
|
|
def setUp(self):
|
|
self.q = q = LineHistory()
|
|
for x in ["aaaa","aaba","aaca","akca","bbb","ako"]:
|
|
q.add_history(RL(x))
|
|
|
|
def test_backward_1(self):
|
|
q = self.q
|
|
self.assertEqual(q.reverse_search_history("b"), "bbb")
|
|
self.assertEqual(q.reverse_search_history("b"), "aaba")
|
|
self.assertEqual(q.reverse_search_history("bb"), "aaba")
|
|
|
|
def test_backward_2(self):
|
|
q = self.q
|
|
self.assertEqual(q.reverse_search_history("a"), "ako")
|
|
self.assertEqual(q.reverse_search_history("aa"), "aaca")
|
|
self.assertEqual(q.reverse_search_history("a"), "aaca")
|
|
self.assertEqual(q.reverse_search_history("ab"), "aaba")
|
|
|
|
|
|
def test_forward_1(self):
|
|
q = self.q
|
|
self.assertEqual(q.forward_search_history("a"), "ako")
|
|
|
|
def test_forward_2(self):
|
|
q = self.q
|
|
q.history_cursor = 0
|
|
self.assertEqual(q.forward_search_history("a"), "aaaa")
|
|
self.assertEqual(q.forward_search_history("a"), "aaba")
|
|
self.assertEqual(q.forward_search_history("ak"), "akca")
|
|
self.assertEqual(q.forward_search_history("akl"), "akca")
|
|
self.assertEqual(q.forward_search_history("ak"), "akca")
|
|
self.assertEqual(q.forward_search_history("ako"), "ako")
|
|
|
|
class Test_empty_history_search_incr_fwd_backwd(unittest.TestCase):
|
|
def setUp(self):
|
|
self.q = q = LineHistory()
|
|
|
|
def test_backward_1(self):
|
|
q = self.q
|
|
self.assertEqual(q.reverse_search_history("b"), "")
|
|
|
|
def test_forward_1(self):
|
|
q = self.q
|
|
self.assertEqual(q.forward_search_history("a"), "")
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
# utility functions
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
|
|
l=lineobj.ReadLineTextBuffer("First Second Third")
|