11"""Test sidebar, coverage 93%"""
2+ import idlelib .sidebar
3+ from sys import platform
24from itertools import chain
35import unittest
46import unittest .mock
79
810from idlelib .delegator import Delegator
911from idlelib .percolator import Percolator
10- import idlelib .sidebar
1112
1213
1314class Dummy_editwin :
@@ -239,6 +240,7 @@ def get_width():
239240 self .assert_sidebar_n_lines (1 )
240241 self .assertEqual (get_width (), 1 )
241242
243+ @unittest .skipIf (platform == 'darwin' , 'test tk version dependent' )
242244 def test_click_selection (self ):
243245 self .linenumber .show_sidebar ()
244246 self .text .insert ('1.0' , 'one\n two\n three\n four\n ' )
@@ -252,14 +254,15 @@ def test_click_selection(self):
252254
253255 self .assertEqual (self .get_selection (), ('2.0' , '3.0' ))
254256
255- def test_drag_selection (self ):
257+ @unittest .skipIf (platform == 'darwin' , 'test tk version dependent' )
258+ def test_drag_selection_down (self ):
256259 self .linenumber .show_sidebar ()
257- self .text .insert ('1.0' , 'one\n two\n three\n four\n ' )
260+ self .text .insert ('1.0' , 'one\n two\n three\n four\n five \ n ' )
258261 self .root .update ()
259262
260- # Drag from the first line to the third line.
261- start_x , start_y = self .get_line_screen_position (1 )
262- end_x , end_y = self .get_line_screen_position (3 )
263+ # Drag from the second line to the fourth line.
264+ start_x , start_y = self .get_line_screen_position (2 )
265+ end_x , end_y = self .get_line_screen_position (4 )
263266 self .linenumber .sidebar_text .event_generate ('<Button-1>' ,
264267 x = start_x , y = start_y )
265268 self .linenumber .sidebar_text .event_generate ('<B1-Motion>' ,
@@ -269,8 +272,27 @@ def test_drag_selection(self):
269272 self .linenumber .sidebar_text .event_generate ('<ButtonRelease-1>' ,
270273 x = end_x , y = end_y )
271274 self .root .update ()
275+ self .assertEqual (self .get_selection (), ('2.0' , '5.0' ))
276+
277+ @unittest .skipIf (platform == 'darwin' , 'test tk version dependent' )
278+ def test_drag_selection_up (self ):
279+ self .linenumber .show_sidebar ()
280+ self .text .insert ('1.0' , 'one\n two\n three\n four\n five\n ' )
281+ self .root .update ()
272282
273- self .assertEqual (self .get_selection (), ('1.0' , '4.0' ))
283+ # Drag from the fourth line to the second line.
284+ start_x , start_y = self .get_line_screen_position (4 )
285+ end_x , end_y = self .get_line_screen_position (2 )
286+ self .linenumber .sidebar_text .event_generate ('<Button-1>' ,
287+ x = start_x , y = start_y )
288+ self .linenumber .sidebar_text .event_generate ('<B1-Motion>' ,
289+ x = start_x , y = start_y )
290+ self .linenumber .sidebar_text .event_generate ('<B1-Motion>' ,
291+ x = end_x , y = end_y )
292+ self .linenumber .sidebar_text .event_generate ('<ButtonRelease-1>' ,
293+ x = end_x , y = end_y )
294+ self .root .update ()
295+ self .assertEqual (self .get_selection (), ('2.0' , '5.0' ))
274296
275297 def test_scroll (self ):
276298 self .linenumber .show_sidebar ()
0 commit comments