@@ -973,6 +973,27 @@ def test_configure_value(self):
973973
974974 test_configure_wraplength = requires_tk (8 , 7 )(StandardOptionsTests .test_configure_wraplength )
975975
976+ def test_step (self ):
977+ widget = self .create (maximum = 100 , mode = 'determinate' )
978+ self .assertEqual (float (widget ['value' ]), 0.0 )
979+ widget .step () # The default increment is 1.0.
980+ self .assertEqual (float (widget ['value' ]), 1.0 )
981+ widget .step (5 )
982+ self .assertEqual (float (widget ['value' ]), 6.0 )
983+ widget .step (- 2 )
984+ self .assertEqual (float (widget ['value' ]), 4.0 )
985+
986+ def test_start_stop (self ):
987+ widget = self .create (maximum = 100 , mode = 'determinate' )
988+ widget .pack ()
989+ widget .start () # Schedule autoincrement; no exception.
990+ widget .update ()
991+ widget .stop () # Cancel it.
992+ # After stopping, the value no longer changes.
993+ value = float (widget ['value' ])
994+ widget .update ()
995+ self .assertEqual (float (widget ['value' ]), value )
996+
976997
977998@unittest .skipIf (sys .platform == 'darwin' ,
978999 'ttk.Scrollbar is special on MacOSX' )
@@ -1639,6 +1660,50 @@ def test_exists(self):
16391660 # in the tcl interpreter since tk requires an item.
16401661 self .assertRaises (tkinter .TclError , self .tv .exists , None )
16411662
1663+ def test_parent (self ):
1664+ a = self .tv .insert ('' , 'end' )
1665+ b = self .tv .insert (a , 'end' )
1666+ self .assertEqual (self .tv .parent (b ), a )
1667+ self .assertEqual (self .tv .parent (a ), '' )
1668+ self .assertRaises (tkinter .TclError , self .tv .parent , 'nonexistent' )
1669+
1670+ def test_next_prev (self ):
1671+ a = self .tv .insert ('' , 'end' )
1672+ b = self .tv .insert ('' , 'end' )
1673+ c = self .tv .insert ('' , 'end' )
1674+ self .assertEqual (self .tv .next (a ), b )
1675+ self .assertEqual (self .tv .next (b ), c )
1676+ self .assertEqual (self .tv .next (c ), '' )
1677+ self .assertEqual (self .tv .prev (c ), b )
1678+ self .assertEqual (self .tv .prev (b ), a )
1679+ self .assertEqual (self .tv .prev (a ), '' )
1680+ self .assertRaises (tkinter .TclError , self .tv .next , 'nonexistent' )
1681+ self .assertRaises (tkinter .TclError , self .tv .prev , 'nonexistent' )
1682+
1683+ def test_see (self ):
1684+ a = self .tv .insert ('' , 'end' )
1685+ b = self .tv .insert (a , 'end' )
1686+ # see() opens all of the item's ancestors.
1687+ self .assertFalse (self .tv .tk .getboolean (self .tv .item (a , 'open' )))
1688+ self .tv .see (b )
1689+ self .assertTrue (self .tv .tk .getboolean (self .tv .item (a , 'open' )))
1690+ self .assertRaises (tkinter .TclError , self .tv .see , 'nonexistent' )
1691+
1692+ def test_identify_element (self ):
1693+ self .tv .pack ()
1694+ self .tv .wait_visibility ()
1695+ parent = self .tv .insert ('' , 'end' , text = 'parent' )
1696+ self .tv .insert (parent , 'end' , text = 'child' )
1697+ self .tv .update ()
1698+ x , y , w , h = self .tv .bbox (parent )
1699+ # The Treeitem.indicator element is packed at the left of the row in
1700+ # the Item layout on every platform and theme.
1701+ element = self .tv .identify_element (x + 8 , y + h // 2 )
1702+ self .assertRegex (element , r'.*indicator\z' )
1703+ # The empty string is returned outside the widget.
1704+ self .assertEqual (self .tv .identify_element (- 1 , - 1 ), '' )
1705+ self .assertRaises (tkinter .TclError , self .tv .identify_element , None , 5 )
1706+
16421707 def test_focus (self ):
16431708 # nothing is focused right now
16441709 self .assertEqual (self .tv .focus (), '' )
0 commit comments