cpython/Lib/tkinter/test
Ethan Furman dbac8f40e8
bpo-38659: [Enum] add _simple_enum decorator (GH-25285)
add:

_simple_enum decorator to transform a normal class into an enum
_test_simple_enum function to compare
_old_convert_ to enable checking _convert_ generated enums
_simple_enum takes a normal class and converts it into an enum:

@simple_enum(Enum)
class Color:
    RED = 1
    GREEN = 2
    BLUE = 3

_old_convert_ works much like _convert_ does, using the original logic:

# in a test file
import socket, enum
CheckedAddressFamily = enum._old_convert_(
        enum.IntEnum, 'AddressFamily', 'socket',
        lambda C: C.isupper() and C.startswith('AF_'),
        source=_socket,
        )

test_simple_enum takes a traditional enum and a simple enum and
compares the two:

# in the REPL or the same module as Color
class CheckedColor(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

_test_simple_enum(CheckedColor, Color)

_test_simple_enum(CheckedAddressFamily, socket.AddressFamily)

Any important differences will raise a TypeError
2021-04-19 18:04:53 -07:00
..
test_tkinter bpo-38659: [Enum] add _simple_enum decorator (GH-25285) 2021-04-19 18:04:53 -07:00
test_ttk Rename Tkinter tests for widget options (GH-23944) 2020-12-26 00:10:29 +02:00
__init__.py
README
runtktests.py Issue #23277: Remove unused imports in tests. 2016-04-24 21:41:02 +03:00
support.py bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) 2020-12-19 12:17:08 +02:00
widget_tests.py Rename Tkinter tests for widget options (GH-23944) 2020-12-26 00:10:29 +02:00

Writing new tests
=================

Precaution
----------

    New tests should always use only one Tk window at once, like all the
    current tests do. This means that you have to destroy the current window
    before creating another one, and clean up after the test. The motivation
    behind this is that some tests may depend on having its window focused
    while it is running to work properly, and it may be hard to force focus
    on your window across platforms (right now only test_traversal at
    test_ttk.test_widgets.NotebookTest depends on this).