@@ -950,6 +950,27 @@ def test_configure_value(self):
950950
951951 test_configure_wraplength = requires_tk (8 , 7 )(StandardOptionsTests .test_configure_wraplength )
952952
953+ def test_step (self ):
954+ widget = self .create (maximum = 100 , mode = 'determinate' )
955+ self .assertEqual (float (widget ['value' ]), 0.0 )
956+ widget .step () # The default increment is 1.0.
957+ self .assertEqual (float (widget ['value' ]), 1.0 )
958+ widget .step (5 )
959+ self .assertEqual (float (widget ['value' ]), 6.0 )
960+ widget .step (- 2 )
961+ self .assertEqual (float (widget ['value' ]), 4.0 )
962+
963+ def test_start_stop (self ):
964+ widget = self .create (maximum = 100 , mode = 'determinate' )
965+ widget .pack ()
966+ widget .start () # Schedule autoincrement; no exception.
967+ widget .update ()
968+ widget .stop () # Cancel it.
969+ # After stopping, the value no longer changes.
970+ value = float (widget ['value' ])
971+ widget .update ()
972+ self .assertEqual (float (widget ['value' ]), value )
973+
953974
954975@unittest .skipIf (sys .platform == 'darwin' ,
955976 'ttk.Scrollbar is special on MacOSX' )
@@ -1604,6 +1625,50 @@ def test_exists(self):
16041625 # in the tcl interpreter since tk requires an item.
16051626 self .assertRaises (tkinter .TclError , self .tv .exists , None )
16061627
1628+ def test_parent (self ):
1629+ a = self .tv .insert ('' , 'end' )
1630+ b = self .tv .insert (a , 'end' )
1631+ self .assertEqual (self .tv .parent (b ), a )
1632+ self .assertEqual (self .tv .parent (a ), '' )
1633+ self .assertRaises (tkinter .TclError , self .tv .parent , 'nonexistent' )
1634+
1635+ def test_next_prev (self ):
1636+ a = self .tv .insert ('' , 'end' )
1637+ b = self .tv .insert ('' , 'end' )
1638+ c = self .tv .insert ('' , 'end' )
1639+ self .assertEqual (self .tv .next (a ), b )
1640+ self .assertEqual (self .tv .next (b ), c )
1641+ self .assertEqual (self .tv .next (c ), '' )
1642+ self .assertEqual (self .tv .prev (c ), b )
1643+ self .assertEqual (self .tv .prev (b ), a )
1644+ self .assertEqual (self .tv .prev (a ), '' )
1645+ self .assertRaises (tkinter .TclError , self .tv .next , 'nonexistent' )
1646+ self .assertRaises (tkinter .TclError , self .tv .prev , 'nonexistent' )
1647+
1648+ def test_see (self ):
1649+ a = self .tv .insert ('' , 'end' )
1650+ b = self .tv .insert (a , 'end' )
1651+ # see() opens all of the item's ancestors.
1652+ self .assertFalse (self .tv .tk .getboolean (self .tv .item (a , 'open' )))
1653+ self .tv .see (b )
1654+ self .assertTrue (self .tv .tk .getboolean (self .tv .item (a , 'open' )))
1655+ self .assertRaises (tkinter .TclError , self .tv .see , 'nonexistent' )
1656+
1657+ def test_identify_element (self ):
1658+ self .tv .pack ()
1659+ self .tv .wait_visibility ()
1660+ parent = self .tv .insert ('' , 'end' , text = 'parent' )
1661+ self .tv .insert (parent , 'end' , text = 'child' )
1662+ self .tv .update ()
1663+ x , y , w , h = self .tv .bbox (parent )
1664+ # The Treeitem.indicator element is packed at the left of the row in
1665+ # the Item layout on every platform and theme.
1666+ element = self .tv .identify_element (x + 8 , y + h // 2 )
1667+ self .assertRegex (element , r'.*indicator\z' )
1668+ # The empty string is returned outside the widget.
1669+ self .assertEqual (self .tv .identify_element (- 1 , - 1 ), '' )
1670+ self .assertRaises (tkinter .TclError , self .tv .identify_element , None , 5 )
1671+
16071672 def test_focus (self ):
16081673 # nothing is focused right now
16091674 self .assertEqual (self .tv .focus (), '' )
0 commit comments