mirror of
https://github.com/python/cpython.git
synced 2025-07-09 20:35:26 +00:00

Modify the wheel event handler so it can also be used for module, path, and stack browsers. Patch by George Zhang.
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
"Test tree. coverage 56%."
|
|
|
|
from idlelib import tree
|
|
import unittest
|
|
from test.support import requires
|
|
requires('gui')
|
|
from tkinter import Tk, EventType, SCROLL
|
|
|
|
|
|
class TreeTest(unittest.TestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.root = Tk()
|
|
cls.root.withdraw()
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
cls.root.destroy()
|
|
del cls.root
|
|
|
|
def test_init(self):
|
|
# Start with code slightly adapted from htest.
|
|
sc = tree.ScrolledCanvas(
|
|
self.root, bg="white", highlightthickness=0, takefocus=1)
|
|
sc.frame.pack(expand=1, fill="both", side='left')
|
|
item = tree.FileTreeItem(tree.ICONDIR)
|
|
node = tree.TreeNode(sc.canvas, None, item)
|
|
node.expand()
|
|
|
|
|
|
class TestScrollEvent(unittest.TestCase):
|
|
|
|
def test_wheel_event(self):
|
|
# Fake widget class containing `yview` only.
|
|
class _Widget:
|
|
def __init__(widget, *expected):
|
|
widget.expected = expected
|
|
def yview(widget, *args):
|
|
self.assertTupleEqual(widget.expected, args)
|
|
# Fake event class
|
|
class _Event:
|
|
pass
|
|
# (type, delta, num, amount)
|
|
tests = ((EventType.MouseWheel, 120, -1, -5),
|
|
(EventType.MouseWheel, -120, -1, 5),
|
|
(EventType.ButtonPress, -1, 4, -5),
|
|
(EventType.ButtonPress, -1, 5, 5))
|
|
|
|
event = _Event()
|
|
for ty, delta, num, amount in tests:
|
|
event.type = ty
|
|
event.delta = delta
|
|
event.num = num
|
|
res = tree.wheel_event(event, _Widget(SCROLL, amount, "units"))
|
|
self.assertEqual(res, "break")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(verbosity=2)
|