⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_urwid.py

📁 Urwid is a Python library for making text console applications. It has many features including fluid
💻 PY
📖 第 1 页 / 共 5 页
字号:
		def test2_right(self):		self.ktest(self.t1,'right','right',9,"right at right edge")				self.t2.set_edit_pos(8)		self.ktest(self.t2,'right',None,9,"right at right edge-1")		self.t3.set_edit_pos(0)		self.t3.keypress((12,),'right')		assert self.t3.get_pref_col((12,)) == 1	def test3_up(self):		self.ktest(self.t1,'up','up',9,"up at top")		self.t2.set_edit_pos(2)		self.t2.keypress((12,),"left")		assert self.t2.get_pref_col((12,)) == 7		self.ktest(self.t2,'up','up',1,"up at top again")		assert self.t2.get_pref_col((12,)) == 7		self.t3.set_edit_pos(10)		self.ktest(self.t3,'up',None,0,"up at top+1")		def test4_down(self):		self.ktest(self.t1,'down','down',9,"down single line")		self.t3.set_edit_pos(5)		self.ktest(self.t3,'down',None,10,"down line 1 to 2")		self.ktest(self.t3,'down',None,15,"down line 2 to 3")		self.ktest(self.t3,'down','down',15,"down at bottom")class EditRenderTest(unittest.TestCase):	def rtest(self, w, expected_text, expected_cursor):		get_cursor = w.get_cursor_coords((4,))		assert get_cursor == expected_cursor, "got: "+`get_cursor`+" expected: "+`expected_cursor`		r = w.render((4,), focus = 1)		text = [t for a, cs, t in [ln[0] for ln in r.content()]]		assert text == expected_text, "got: "+`text`+" expected: "+`expected_text`		assert r.cursor == expected_cursor, "got: "+`r.cursor`+" expected: "+`expected_cursor`		def test1_SpaceWrap(self):		w = urwid.Edit("","blah blah")		w.set_edit_pos(0)		self.rtest(w,["blah","blah"],(0,0))				w.set_edit_pos(4)		self.rtest(w,["lah ","blah"],(3,0))		w.set_edit_pos(5)		self.rtest(w,["blah","blah"],(0,1))				w.set_edit_pos(9)		self.rtest(w,["blah","lah "],(3,1))		def test2_ClipWrap(self):		w = urwid.Edit("","blah\nblargh",1)		w.set_wrap_mode('clip')		w.set_edit_pos(0)		self.rtest(w,["blah","blar"],(0,0))				w.set_edit_pos(10)		self.rtest(w,["blah","argh"],(3,1))				w.set_align_mode('right')		w.set_edit_pos(6)		self.rtest(w,["blah","larg"],(0,1))		def test3_AnyWrap(self):		w = urwid.Edit("","blah blah")		w.set_wrap_mode('any')				self.rtest(w,["blah"," bla","h   "],(1,2))	def test4_CursorNudge(self):		w = urwid.Edit("","hi",align='right')		w.keypress((4,),'end')		self.rtest(w,[" hi "],(3,0))				w.keypress((4,),'left')		self.rtest(w,["  hi"],(3,0))		class SelectableText(urwid.Text):	def selectable(self):		return 1			def keypress(self, size, key):		return key		class ListBoxCalculateVisibleTest(unittest.TestCase):			def cvtest(self, desc, body, focus, offset_rows, inset_fraction,		exp_offset_inset, exp_cur ):				lbox = urwid.ListBox(body)		lbox.body.set_focus( focus )		lbox.offset_rows = offset_rows		lbox.inset_fraction = inset_fraction		middle, top, bottom = lbox.calculate_visible((4,5),focus=1)		offset_inset, focus_widget, focus_pos, _ign, cursor = middle					if cursor is not None:			x, y = cursor			y += offset_inset			cursor = x, y						assert offset_inset == exp_offset_inset, "%s got: %s expected: %s" %(desc,`offset_inset`,`exp_offset_inset`)		assert cursor == exp_cur, "%s (cursor) got: %s expected: %s" %(desc,`cursor`,`exp_cur`)		def test1_simple(self):		T = urwid.Text		l = [T(""),T(""),T("\n"),T("\n\n"),T("\n"),T(""),T("")]		self.cvtest( "simple top position", 			l, 3, 0, (0,1), 0, None )				self.cvtest( "simple middle position", 			l, 3, 1, (0,1), 1, None )		self.cvtest( "simple bottom postion",			l, 3, 2, (0,1), 2, None )		self.cvtest( "straddle top edge",			l, 3, 0, (1,2), -1, None )		self.cvtest( "straddle bottom edge",			l, 3, 4, (0,1), 4, None )		self.cvtest( "off bottom edge",			l, 3, 5, (0,1), 4, None )		self.cvtest( "way off bottom edge",			l, 3, 100, (0,1), 4, None )			self.cvtest( "gap at top",			l, 0, 2, (0,1), 0, None )				self.cvtest( "gap at top and off bottom edge",			l, 2, 5, (0,1), 2, None )		self.cvtest( "gap at bottom",			l, 6, 1, (0,1), 4, None )					self.cvtest( "gap at bottom and straddling top edge",			l, 4, 0, (1,2), 1, None )					self.cvtest( "gap at bottom cannot completely fill",			[T(""),T(""),T("")], 1, 0, (0,1), 1, None )					self.cvtest( "gap at top and bottom",			[T(""),T(""),T("")], 1, 2, (0,1), 1, None )		def test2_cursor(self):		T, E = urwid.Text, urwid.Edit		l1 = [T(""),T(""),T("\n"),E("","\n\nX"),T("\n"),T(""),T("")]		l2 = [T(""),T(""),T("\n"),E("","YY\n\n"),T("\n"),T(""),T("")]		l2[3].set_edit_pos(2)				self.cvtest( "plain cursor in view",			l1, 3, 1, (0,1), 1, (1,3) )		self.cvtest( "cursor off top",			l2, 3, 0, (1,3), 0, (2, 0) )		self.cvtest( "cursor further off top",			l2, 3, 0, (2,3), 0, (2, 0) )		self.cvtest( "cursor off bottom",			l1, 3, 3, (0,1), 2, (1, 4) )		self.cvtest( "cursor way off bottom",			l1, 3, 100, (0,1), 2, (1, 4) )			class ListBoxChangeFocusTest(unittest.TestCase):			def cftest(self, desc, body, pos, offset_inset, 			coming_from, cursor, snap_rows, 			exp_offset_rows, exp_inset_fraction, exp_cur ):				lbox = urwid.ListBox(body)				lbox.change_focus( (4,5), pos, offset_inset, coming_from,			cursor, snap_rows )		exp = exp_offset_rows, exp_inset_fraction		act = lbox.offset_rows, lbox.inset_fraction				cursor = None		focus_widget, focus_pos = lbox.body.get_focus()		if focus_widget.selectable():			if hasattr(focus_widget,'get_cursor_coords'):				cursor=focus_widget.get_cursor_coords((4,))					assert act == exp, "%s got: %s expected: %s" %(desc, act, exp)		assert cursor == exp_cur, "%s (cursor) got: %s expected: %s" %(desc,`cursor`,`exp_cur`)				def test1unselectable(self):		T = urwid.Text		l = [T("\n"),T("\n\n"),T("\n\n"),T("\n\n"),T("\n")]				self.cftest( "simple unselectable",			l, 2, 0, None, None, None, 0, (0,1), None )		self.cftest( "unselectable",			l, 2, 1, None, None, None, 1, (0,1), None )		self.cftest( "unselectable off top",			l, 2, -2, None, None, None, 0, (2,3), None )				self.cftest( "unselectable off bottom",			l, 3, 2, None, None, None, 2, (0,1), None )			def test2selectable(self):		T, S = urwid.Text, SelectableText		l = [T("\n"),T("\n\n"),S("\n\n"),T("\n\n"),T("\n")]		self.cftest( "simple selectable",			l, 2, 0, None, None, None, 0, (0,1), None )		self.cftest( "selectable",			l, 2, 1, None, None, None, 1, (0,1), None )		self.cftest( "selectable at top",			l, 2, 0, 'below', None, None, 0, (0,1), None )		self.cftest( "selectable at bottom",			l, 2, 2, 'above', None, None, 2, (0,1), None )				self.cftest( "selectable off top snap",			l, 2, -1, 'below', None, None, 0, (0,1), None )				self.cftest( "selectable off bottom snap",			l, 2, 3, 'above', None, None, 2, (0,1), None )				self.cftest( "selectable off top no snap",			l, 2, -1, 'above', None, None, 0, (1,3), None )				self.cftest( "selectable off bottom no snap",			l, 2, 3, 'below', None, None, 3, (0,1), None )			def test3large_selectable(self):		T, S = urwid.Text, SelectableText		l = [T("\n"),S("\n\n\n\n\n\n"),T("\n")]		self.cftest( "large selectable no snap", 			l, 1, -1, None, None, None, 0, (1,7), None )    		self.cftest( "large selectable snap up", 			l, 1, -2, 'below', None, None, 0, (0,1), None )    		self.cftest( "large selectable snap up2", 			l, 1, -2, 'below', None, 2, 0, (0,1), None )    		self.cftest( "large selectable almost snap up", 			l, 1, -2, 'below', None, 1, 0, (2,7), None )    		self.cftest( "large selectable snap down", 			l, 1, 0, 'above', None, None, 0, (2,7), None )		self.cftest( "large selectable snap down2", 			l, 1, 0, 'above', None, 2, 0, (2,7), None )					self.cftest( "large selectable almost snap down", 			l, 1, 0, 'above', None, 1, 0, (0,1), None )		def test4cursor(self):		T,E = urwid.Text, urwid.Edit		#...							class ListBoxRenderTest(unittest.TestCase):			def ltest(self,desc,body,focus,offset_inset_rows,exp_text,exp_cur):				lbox = urwid.ListBox(body)		lbox.body.set_focus( focus )		lbox.shift_focus((4,10), offset_inset_rows )		canvas = lbox.render( (4,5), focus=1 )		text = ["".join([t for at, cs, t in ln]) for ln in canvas.content()]		cursor = canvas.cursor				assert text == exp_text, "%s (text) got: %s expected: %s" %(desc,`text`,`exp_text`)		assert cursor == exp_cur, "%s (cursor) got: %s expected: %s" %(desc,`cursor`,`exp_cur`)				def test1Simple(self):		T = urwid.Text				self.ltest( "simple one text item render",			[T("1\n2")], 0, 0,			["1   ","2   ","    ","    ","    "],None)		self.ltest( "simple multi text item render off bottom",			[T("1"),T("2"),T("3\n4"),T("5"),T("6")], 2, 2,			["1   ","2   ","3   ","4   ","5   "],None)		self.ltest( "simple multi text item render off top",			[T("1"),T("2"),T("3\n4"),T("5"),T("6")], 2, 1,			["2   ","3   ","4   ","5   ","6   "],None)	def test2Trim(self):		T = urwid.Text				self.ltest( "trim unfocused bottom",			[T("1\n2"),T("3\n4"),T("5\n6")], 1, 2,			["1   ","2   ","3   ","4   ","5   "],None)				self.ltest( "trim unfocused top",			[T("1\n2"),T("3\n4"),T("5\n6")], 1, 1,			["2   ","3   ","4   ","5   ","6   "],None)				self.ltest( "trim none full focus",			[T("1\n2\n3\n4\n5")], 0, 0,			["1   ","2   ","3   ","4   ","5   "],None)				self.ltest( "trim focus bottom",			[T("1\n2\n3\n4\n5\n6")], 0, 0,			["1   ","2   ","3   ","4   ","5   "],None)				self.ltest( "trim focus top",			[T("1\n2\n3\n4\n5\n6")], 0, -1,			["2   ","3   ","4   ","5   ","6   "],None)				self.ltest( "trim focus top and bottom",			[T("1\n2\n3\n4\n5\n6\n7")], 0, -1,			["2   ","3   ","4   ","5   ","6   "],None)			def test3Shift(self):		T,E = urwid.Text, urwid.Edit				self.ltest( "shift up one fit",			[T("1\n2"),T("3"),T("4"),T("5"),T("6")], 4, 5,			["2   ","3   ","4   ","5   ","6   "],None)					e = E("","ab\nc",1)		e.set_edit_pos( 2 )		self.ltest( "shift down one cursor over edge",			[e,T("3"),T("4"),T("5\n6")], 0, -1,			["ab  ","c   ","3   ","4   ","5   "], (2,0))					self.ltest( "shift up one cursor over edge",			[T("1\n2"),T("3"),T("4"),E("","d\ne")], 3, 4,			["2   ","3   ","4   ","d   ","e   "], (1,4))		self.ltest( "shift none cursor top focus over edge",			[E("","ab\n"),T("3"),T("4"),T("5\n6")], 0, -1,			["    ","3   ","4   ","5   ","6   "], (0,0))		e = E("","abc\nd")		e.set_edit_pos( 3 )		self.ltest( "shift none cursor bottom focus over edge",			[T("1\n2"),T("3"),T("4"),e], 3, 4,			["1   ","2   ","3   ","4   ","abc "], (3,4))					class ListBoxKeypressTest(unittest.TestCase):			def ktest(self, desc, key, body, focus, offset_inset,		exp_focus, exp_offset_inset, exp_cur, lbox = None):				if lbox is None:			lbox = urwid.ListBox(body)			lbox.body.set_focus( focus )			lbox.shift_focus((4,10), offset_inset )		ret_key = lbox.keypress((4,5),key)		middle, top, bottom = lbox.calculate_visible((4,5),focus=1)		offset_inset, focus_widget, focus_pos, _ign, cursor = middle					if cursor is not None:			x, y = cursor			y += offset_inset			cursor = x, y						exp = exp_focus, exp_offset_inset		act = focus_pos, offset_inset		assert act == exp, "%s got: %s expected: %s" %(desc,`act`,`exp`)		assert cursor == exp_cur, "%s (cursor) got: %s expected: %s" %(desc,`cursor`,`exp_cur`)		return ret_key,lbox					def test1_up(self):		T,S,E = urwid.Text, SelectableText, urwid.Edit				self.ktest( "direct selectable both visible", 'up',			[S(""),S("")], 1, 1,			0, 0, None )		self.ktest( "selectable skip one all visible", 'up',			[S(""),T(""),S("")], 2, 2,			0, 0, None )		key,lbox = self.ktest( "nothing above no scroll", 'up',			[S("")], 0, 0,			0, 0, None )		assert key == 'up'		key, lbox = self.ktest( "unselectable above no scroll", 'up',			[T(""),T(""),S("")], 2, 2,			2, 2, None )		assert key == 'up'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -