shadowbrokers-exploits/windows/fuzzbunch/pyreadline/test/lineeditor_test.py
2017-04-14 11:45:07 +02:00

390 lines
No EOL
12 KiB
Python

# Copyright (C) 2006 Michael Graz. <mgraz@plan10.com>
import sys, unittest
sys.path.append ('../..')
#from pyreadline.modes.vi import *
#from pyreadline import keysyms
from pyreadline.lineeditor import lineobj
#----------------------------------------------------------------------
#----------------------------------------------------------------------
class Test_copy (unittest.TestCase):
def test_copy1 (self):
l=lineobj.ReadLineTextBuffer("first second")
q=l.copy()
self.assertEqual(q.get_line_text(),l.get_line_text())
self.assertEqual(q.point,l.point)
self.assertEqual(q.mark,l.mark)
def test_copy2 (self):
l=lineobj.ReadLineTextBuffer("first second",point=5)
q=l.copy()
self.assertEqual(q.get_line_text(),l.get_line_text())
self.assertEqual(q.point,l.point)
self.assertEqual(q.mark,l.mark)
class Test_linepos (unittest.TestCase):
t="test text"
def test_NextChar (self):
t=self.t
l=lineobj.ReadLineTextBuffer(t)
for i in range(len(t)):
self.assertEqual(i,l.point)
l.point=lineobj.NextChar
#advance past end of buffer
l.point=lineobj.NextChar
self.assertEqual(len(t),l.point)
def test_PrevChar (self):
t=self.t
l=lineobj.ReadLineTextBuffer(t,point=len(t))
for i in range(len(t)):
self.assertEqual(len(t)-i,l.point)
l.point=lineobj.PrevChar
#advance past beginning of buffer
l.point=lineobj.PrevChar
self.assertEqual(0,l.point)
def test_EndOfLine (self):
t=self.t
l=lineobj.ReadLineTextBuffer(t,point=len(t))
for i in range(len(t)):
l.point=i
l.point=lineobj.EndOfLine
self.assertEqual(len(t),l.point)
def test_StartOfLine (self):
t=self.t
l=lineobj.ReadLineTextBuffer(t,point=len(t))
for i in range(len(t)):
l.point=i
l.point=lineobj.StartOfLine
self.assertEqual(0,l.point)
class Tests_linepos2(Test_linepos):
t="kajkj"
class Tests_linepos3(Test_linepos):
t=""
class Test_movement (unittest.TestCase):
def test_NextChar (self):
cmd=lineobj.NextChar
tests=[
# "First"
(cmd,
"First",
"# ",
" # "),
(cmd,
"First",
" # ",
" #"),
(cmd,
"First",
" #",
" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_PrevChar (self):
cmd=lineobj.PrevChar
tests=[
# "First"
(cmd,
"First",
" #",
" # "),
(cmd,
"First",
" # ",
"# "),
(cmd,
"First",
"# ",
"# "),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_PrevWordStart (self):
cmd=lineobj.PrevWordStart
tests=[
# "First Second Third"
(cmd,
"First Second Third",
" #",
" # "),
(cmd,
"First Second Third",
" # ",
" # "),
(cmd,
"First Second Third",
" # ",
"# "),
(cmd,
"First Second Third",
"# ",
"# "),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_NextWordStart (self):
cmd=lineobj.NextWordStart
tests=[
# "First Second Third"
(cmd,
"First Second Third",
"# ",
" # "),
(cmd,
"First Second Third",
" # ",
" # "),
(cmd,
"First Second Third",
" # ",
" # "),
(cmd,
"First Second Third",
" # ",
" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_NextWordEnd (self):
cmd=lineobj.NextWordEnd
tests=[
# "First Second Third"
(cmd,
"First Second Third",
"# ",
" # "),
(cmd,
"First Second Third",
" # ",
" # "),
(cmd,
"First Second Third",
" # ",
" # "),
(cmd,
"First Second Third",
" # ",
" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_PrevWordEnd (self):
cmd=lineobj.PrevWordEnd
tests=[
# "First Second Third"
(cmd,
"First Second Third",
" #",
" # "),
(cmd,
"First Second Third",
" # ",
" # "),
(cmd,
"First Second Third",
" # ",
"# "),
(cmd,
"First Second Third",
"# ",
"# "),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_WordEnd_1 (self):
cmd=lineobj.WordEnd
tests=[
# "First Second Third"
(cmd,
"First Second Third",
"# ",
" # "),
(cmd,
"First Second Third",
" # ",
" # "),
(cmd,
"First Second Third",
" # ",
" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_WordEnd_2 (self):
cmd=lineobj.WordEnd
tests=[
# "First Second Third"
(cmd,
"First Second Third",
" # "),
(cmd,
"First Second Third",
" # "),
(cmd,
"First Second Third",
" #"),
]
for cmd,text,init_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
self.assertRaises(lineobj.NotAWordError,cmd,l)
def test_WordStart_1 (self):
cmd=lineobj.WordStart
tests=[
# "First Second Third"
(cmd,
"First Second Third",
"# ",
"# "),
(cmd,
"First Second Third",
" # ",
"# "),
(cmd,
"First Second Third",
" # ",
" # "),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_WordStart_2 (self):
cmd=lineobj.WordStart
tests=[
# "First Second Third"
(cmd,
"First Second Third",
" # "),
(cmd,
"First Second Third",
" # "),
(cmd,
"First Second Third",
" #"),
]
for cmd,text,init_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
self.assertRaises(lineobj.NotAWordError,cmd,l)
def test_StartOfLine (self):
cmd=lineobj.StartOfLine
tests=[
# "First Second Third"
(cmd,
"First Second Third",
"# ",
"# "),
(cmd,
"First Second Third",
" # ",
"# "),
(cmd,
"First Second Third",
" #",
"# "),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_EndOfLine (self):
cmd=lineobj.EndOfLine
tests=[
# "First Second Third"
(cmd,
"First Second Third",
"# ",
" #"),
(cmd,
"First Second Third",
" # ",
" #"),
(cmd,
"First Second Third",
" #",
" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_Point(self):
cmd=lineobj.Point
tests=[
# "First Second Third"
(cmd,
"First Second Third",
0),
(cmd,
"First Second Third",
12),
(cmd,
"First Second Third",
18),
]
for cmd,text,p in tests:
l=lineobj.ReadLineTextBuffer(text,p)
self.assertEqual(p,cmd(l))
#----------------------------------------------------------------------
# utility functions
def get_point_pos(pstr):
return pstr.index("#")
def get_mark_pos(mstr):
try:
return mstr.index("#")
except ValueError:
return -1
#----------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()
l=lineobj.ReadLineTextBuffer("First Second Third")