📄 test_urwid.py
字号:
self.ktest( "unselectable above scroll 1", 'up', [T(""),S(""),T("\n\n\n")], 1, 0, 1, 1, None ) self.ktest( "selectable above scroll 1", 'up', [S(""),S(""),T("\n\n\n")], 1, 0, 0, 0, None ) self.ktest( "selectable above too far", 'up', [S(""),T(""),S(""),T("\n\n\n")], 2, 0, 2, 1, None ) self.ktest( "selectable above skip 1 scroll 1", 'up', [S(""),T(""),S(""),T("\n\n\n")], 2, 1, 0, 0, None ) self.ktest( "tall selectable above scroll 2", 'up', [S(""),S("\n"),S(""),T("\n\n\n")], 2, 0, 1, 0, None ) self.ktest( "very tall selectable above scroll 5", 'up', [S(""),S("\n\n\n\n"),S(""),T("\n\n\n\n")], 2, 0, 1, 0, None ) self.ktest( "very tall selected scroll within 1", 'up', [S(""),S("\n\n\n\n\n")], 1, -1, 1, 0, None ) self.ktest( "edit above pass cursor", 'up', [E("","abc"),E("","de")], 1, 1, 0, 0, (2, 0) ) key,lbox = self.ktest( "edit too far above pass cursor A", 'up', [E("","abc"),T("\n\n\n\n"),E("","de")], 2, 4, 1, 0, None ) self.ktest( "edit too far above pass cursor B", 'up', None, None, None, 0, 0, (2,0), lbox ) self.ktest( "within focus cursor made not visible", 'up', [T("\n\n\n"),E("hi\n","ab")], 1, 3, 0, 0, None ) self.ktest( "within focus cursor made not visible (2)", 'up', [T("\n\n\n\n"),E("hi\n","ab")], 1, 3, 0, -1, None ) self.ktest( "force focus unselectable" , 'up', [T("\n\n\n\n"),S("")], 1, 4, 0, 0, None ) self.ktest( "pathological cursor widget", 'up', [T("\n"),E("\n\n\n\n\n","a")], 1, 4, 0, -1, None ) self.ktest( "unselectable to unselectable", 'up', [T(""),T(""),T(""),T(""),T(""),T(""),T("")], 2, 0, 1, 0, None ) self.ktest( "unselectable over edge to same", 'up', [T(""),T("12\n34"),T(""),T(""),T(""),T("")],1,-1, 1, 0, None ) key,lbox = self.ktest( "edit short between pass cursor A", 'up', [E("","abcd"),E("","a"),E("","def")], 2, 2, 1, 1, (1,1) ) self.ktest( "edit short between pass cursor B", 'up', None, None, None, 0, 0, (3,0), lbox ) e = E("","\n\n\n\n\n") e.set_edit_pos(1) key,lbox = self.ktest( "edit cursor force scroll", 'up', [e], 0, -1, 0, 0, (0,0) ) assert lbox.inset_fraction[0] == 0 def test2_down(self): T,S,E = urwid.Text, SelectableText, urwid.Edit self.ktest( "direct selectable both visible", 'down', [S(""),S("")], 0, 0, 1, 1, None ) self.ktest( "selectable skip one all visible", 'down', [S(""),T(""),S("")], 0, 0, 2, 2, None ) key,lbox = self.ktest( "nothing below no scroll", 'down', [S("")], 0, 0, 0, 0, None ) assert key == 'down' key, lbox = self.ktest( "unselectable below no scroll", 'down', [S(""),T(""),T("")], 0, 0, 0, 0, None ) assert key == 'down' self.ktest( "unselectable below scroll 1", 'down', [T("\n\n\n"),S(""),T("")], 1, 4, 1, 3, None ) self.ktest( "selectable below scroll 1", 'down', [T("\n\n\n"),S(""),S("")], 1, 4, 2, 4, None ) self.ktest( "selectable below too far", 'down', [T("\n\n\n"),S(""),T(""),S("")], 1, 4, 1, 3, None ) self.ktest( "selectable below skip 1 scroll 1", 'down', [T("\n\n\n"),S(""),T(""),S("")], 1, 3, 3, 4, None ) self.ktest( "tall selectable below scroll 2", 'down', [T("\n\n\n"),S(""),S("\n"),S("")], 1, 4, 2, 3, None ) self.ktest( "very tall selectable below scroll 5", 'down', [T("\n\n\n\n"),S(""),S("\n\n\n\n"),S("")], 1, 4, 2, 0, None ) self.ktest( "very tall selected scroll within 1", 'down', [S("\n\n\n\n\n"),S("")], 0, 0, 0, -1, None ) self.ktest( "edit below pass cursor", 'down', [E("","de"),E("","abc")], 0, 0, 1, 1, (2, 1) ) key,lbox=self.ktest( "edit too far below pass cursor A", 'down', [E("","de"),T("\n\n\n\n"),E("","abc")], 0, 0, 1, 0, None ) self.ktest( "edit too far below pass cursor B", 'down', None, None, None, 2, 4, (2,4), lbox ) odd_e = E("","hi\nab") odd_e.set_edit_pos( 2 ) # disble cursor movement in odd_e object odd_e.move_cursor_to_coords = lambda s,c,xy: 0 self.ktest( "within focus cursor made not visible", 'down', [odd_e,T("\n\n\n\n")], 0, 0, 1, 1, None ) self.ktest( "within focus cursor made not visible (2)", 'down', [odd_e,T("\n\n\n\n"),], 0, 0, 1, 1, None ) self.ktest( "force focus unselectable" , 'down', [S(""),T("\n\n\n\n")], 0, 0, 1, 0, None ) odd_e.set_edit_text( "hi\n\n\n\n\n" ) self.ktest( "pathological cursor widget", 'down', [odd_e,T("\n")], 0, 0, 1, 4, None ) self.ktest( "unselectable to unselectable", 'down', [T(""),T(""),T(""),T(""),T(""),T(""),T("")], 4, 4, 5, 4, None ) self.ktest( "unselectable over edge to same", 'down', [T(""),T(""),T(""),T(""),T("12\n34"),T("")],4,4, 4, 3, None ) key,lbox=self.ktest( "edit short between pass cursor A", 'down', [E("","abc"),E("","a"),E("","defg")], 0, 0, 1, 1, (1,1) ) self.ktest( "edit short between pass cursor B", 'down', None, None, None, 2, 2, (3,2), lbox ) e = E("","\n\n\n\n\n") e.set_edit_pos(4) key,lbox = self.ktest( "edit cursor force scroll", 'down', [e], 0, 0, 0, -1, (0,4) ) assert lbox.inset_fraction[0] == 1 def test3_page_up(self): T,S,E = urwid.Text, SelectableText, urwid.Edit self.ktest( "unselectable aligned to aligned", 'page up', [T(""),T("\n"),T("\n\n"),T(""),T("\n"),T("\n\n")], 3, 0, 1, 0, None ) self.ktest( "unselectable unaligned to aligned", 'page up', [T(""),T("\n"),T("\n"),T("\n"),T("\n"),T("\n\n")], 3,-1, 1, 0, None ) self.ktest( "selectable to unselectable", 'page up', [T(""),T("\n"),T("\n"),T("\n"),S("\n"),T("\n\n")], 4, 1, 1, -1, None ) self.ktest( "selectable to cut off selectable", 'page up', [S("\n\n"),T("\n"),T("\n"),S("\n"),T("\n\n")], 3, 1, 0, -2, None ) self.ktest( "seletable to selectable", 'page up', [T("\n\n"),S("\n"),T("\n"),S("\n"),T("\n\n")], 3, 1, 1, 1, None ) self.ktest( "within very long selectable", 'page up', [S(""),S("\n\n\n\n\n\n\n\n"),T("\n")], 1, -6, 1, -1, None ) e = E("","\n\nab\n\n\n\n\ncd\n") e.set_edit_pos(11) self.ktest( "within very long cursor widget", 'page up', [S(""),e,T("\n")], 1, -6, 1, -2, (2, 0) ) self.ktest( "pathological cursor widget", 'page up', [T(""),E("\n\n\n\n\n\n\n\n","ab"),T("")], 1, -5, 0, 0, None ) e = E("","\nab\n\n\n\n\ncd\n") e.set_edit_pos(10) self.ktest( "very long cursor widget snap", 'page up', [T(""),e,T("\n")], 1, -5, 1, 0, (2, 1) ) self.ktest( "slight scroll selectable", 'page up', [T("\n"),S("\n"),T(""),S(""),T("\n\n\n"),S("")], 5, 4, 3, 0, None ) self.ktest( "scroll into snap region", 'page up', [T("\n"),S("\n"),T(""),T(""),T("\n\n\n"),S("")], 5, 4, 1, 0, None ) self.ktest( "mid scroll short", 'page up', [T("\n"),T(""),T(""),S(""),T(""),T("\n"),S(""),T("\n")], 6, 2, 3, 1, None ) self.ktest( "mid scroll long", 'page up', [T("\n"),S(""),T(""),S(""),T(""),T("\n"),S(""),T("\n")], 6, 2, 1, 0, None ) self.ktest( "mid scroll perfect", 'page up', [T("\n"),S(""),S(""),S(""),T(""),T("\n"),S(""),T("\n")], 6, 2, 2, 0, None ) self.ktest( "cursor move up fail short", 'page up', [T("\n"),T("\n"),E("","\nab"),T(""),T("")], 2, 1, 2, 4, (0, 4) ) self.ktest( "cursor force fail short", 'page up', [T("\n"),T("\n"),E("\n","ab"),T(""),T("")], 2, 1, 0, 0, None ) odd_e = E("","hi\nab") odd_e.set_edit_pos( 2 ) # disble cursor movement in odd_e object odd_e.move_cursor_to_coords = lambda s,c,xy: 0 self.ktest( "cursor force fail long", 'page up', [odd_e,T("\n"),T("\n"),T("\n"),S(""),T("\n")], 4, 2, 1, -1, None ) self.ktest( "prefer not cut off", 'page up', [S("\n"),T("\n"),S(""),T("\n\n"),S(""),T("\n")], 4, 2, 2, 1, None ) self.ktest( "allow cut off", 'page up', [S("\n"),T("\n"),T(""),T("\n\n"),S(""),T("\n")], 4, 2, 0, -1, None ) self.ktest( "at top fail", 'page up', [T("\n\n"),T("\n"),T("\n\n\n")], 0, 0, 0, 0, None ) self.ktest( "all visible fail", 'page up', [T("a"),T("\n")], 0, 0, 0, 0, None ) self.ktest( "current ok fail", 'page up', [T("\n\n"),S("hi")], 1, 3, 1, 3, None ) self.ktest( "all visible choose top selectable", 'page up', [T(""),S("a"),S("b"),S("c")], 3, 3, 1, 1, None ) self.ktest( "bring in edge choose top", 'page up', [S("b"),T("-"),S("-"),T("c"),S("d"),T("-")],4,3, 0, 0, None ) self.ktest( "bring in edge choose top selectable", 'page up', [T("b"),S("-"),S("-"),T("c"),S("d"),T("-")],4,3, 1, 1, None ) def test4_page_down(self): T,S,E = urwid.Text, SelectableText, urwid.Edit self.ktest( "unselectable aligned to aligned", 'page down', [T("\n\n"),T("\n"),T(""),T("\n\n"),T("\n"),T("")], 2, 4, 4, 3, None ) self.ktest( "unselectable unaligned to aligned", 'page down', [T("\n\n"),T("\n"),T("\n"),T("\n"),T("\n"),T("")], 2, 4, 4, 3, None ) self.ktest( "selectable to unselectable", 'page down', [T("\n\n"),S("\n"),T("\n"),T("\n"),T("\n"),T("")], 1, 2, 4, 4, None ) self.ktest( "selectable to cut off selectable", 'page down', [T("\n\n"),S("\n"),T("\n"),T("\n"),S("\n\n")], 1, 2, 4, 4, None ) self.ktest( "seletable to selectable", 'page down', [T("\n\n"),S("\n"),T("\n"),S("\n"),T("\n\n")], 1, 1, 3, 2, None ) self.ktest( "within very long selectable", 'page down', [T("\n"),S("\n\n\n\n\n\n\n\n"),S("")], 1, 2, 1, -3, None ) e = E("","\nab\n\n\n\n\ncd\n\n") e.set_edit_pos(2) self.ktest( "within very long cursor widget", 'page down', [T("\n"),e,S("")], 1, 2, 1, -2, (1, 4) ) odd_e = E("","ab\n\n\n\n\n\n\n\n\n") odd_e.set_edit_pos( 1 ) # disble cursor movement in odd_e object odd_e.move_cursor_to_coords = lambda s,c,xy: 0 self.ktest( "pathological cursor widget", 'page down', [T(""),odd_e,T("")], 1, 1, 2, 4, None ) e = E("","\nab\n\n\n\n\ncd\n") e.set_edit_pos(2) self.ktest( "very long cursor widget snap", 'page down', [T("\n"),e,T("")], 1, 2, 1, -3, (1, 3) ) self.ktest( "slight scroll selectable", 'page down', [S(""),T("\n\n\n"),S(""),T(""),S("\n"),T("\n")], 0, 0, 2, 4, None ) self.ktest( "scroll into snap region", 'page down', [S(""),T("\n\n\n"),T(""),T(""),S("\n"),T("\n")], 0, 0, 4, 3, None ) self.ktest( "mid scroll short", 'page down', [T("\n"),S(""),T("\n"),T(""),S(""),T(""),T(""),T("\n")], 1, 2, 4, 3, None ) self.ktest( "mid scroll long", 'page down', [T("\n"),S(""),T("\n"),T(""),S(""),T(""),S(""),T("\n")], 1, 2, 6, 4, None ) self.ktest( "mid scroll perfect", 'page down', [T("\n"),S(""),T("\n"),T(""),S(""),S(""),S(""),T("\n")], 1, 2, 5, 4, None ) e = E("","hi\nab") e.set_edit_pos( 1 ) self.ktest( "cursor move up fail short", 'page down', [T(""),T(""),e,T("\n"),T("\n")], 2, 1, 2, -1, (1, 0) ) odd_e = E("","hi\nab") odd_e.set_edit_pos( 1 ) # disble cursor movement in odd_e object odd_e.move_cursor_to_coords = lambda s,c,xy: 0 self.ktest( "cursor force fail short", 'page down', [T(""),T(""),odd_e,T("\n"),T("\n")], 2, 2, 4, 3, None ) self.ktest( "cursor force fail long", 'page down', [T("\n"),S(""),T("\n"),T("\n"),T("\n"),E("hi\n","ab")], 1, 2, 4, 4, None ) self.ktest( "prefer not cut off", 'page down', [T("\n"),S(""),T("\n\n"),S(""),T("\n"),S("\n")], 1, 2, 3, 3, None ) self.ktest( "allow cut off", 'page down', [T("\n"),S(""),T("\n\n"),T(""),T("\n"),S("\n")], 1, 2, 5, 4, None ) self.ktest( "at bottom fail", 'page down', [T("\n\n"),T("\n"),T("\n\n\n")], 2, 1, 2, 1, None ) self.ktest( "all visible fail", 'page down', [T("a"),T("\n")], 1, 1, 1, 1, None ) self.ktest( "current ok fail", 'page down', [S("hi"),T("\n\n")], 0, 0, 0, 0, None ) self.ktest( "all visible choose last selectable", 'page down', [S("a"),S("b"),S("c"),T("")], 0, 0, 2, 2, None ) self.ktest( "bring in edge choose last", 'page down', [T("-"),S("d"),T("c"),S("-"),T("-"),S("b")],1,1, 5,4, None ) self.ktest( "bring in edge choose last selectable", 'page down', [T("-"),S("d"),T("c"),S("-"),S("-"),T("b")],1,1, 4,3, None )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -