Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
fbcb6fae
Commit
fbcb6fae
authored
Jul 23, 2018
by
Serhiy Storchaka
Committed by
GitHub
Jul 23, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bpo-34189: Remove a file backported by accident. (GH-8419)
parent
7868426c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
1227 deletions
+0
-1227
Lib/tkinter/test/test_tkinter/test_widgets.py
Lib/tkinter/test/test_tkinter/test_widgets.py
+0
-1227
No files found.
Lib/tkinter/test/test_tkinter/test_widgets.py
deleted
100644 → 0
View file @
7868426c
import
unittest
import
tkinter
from
tkinter
import
TclError
import
os
import
sys
from
test.support
import
requires
from
tkinter.test.support
import
(
tcl_version
,
requires_tcl
,
get_tk_patchlevel
,
widget_eq
)
from
tkinter.test.widget_tests
import
(
add_standard_options
,
noconv
,
pixels_round
,
AbstractWidgetTest
,
StandardOptionsTests
,
IntegerSizeTests
,
PixelSizeTests
,
setUpModule
)
requires
(
'gui'
)
def
float_round
(
x
):
return
float
(
round
(
x
))
class
AbstractToplevelTest
(
AbstractWidgetTest
,
PixelSizeTests
):
_conv_pad_pixels
=
noconv
def
test_class
(
self
):
widget
=
self
.
create
()
self
.
assertEqual
(
widget
[
'class'
],
widget
.
__class__
.
__name__
.
title
())
self
.
checkInvalidParam
(
widget
,
'class'
,
'Foo'
,
errmsg
=
"can't modify -class option after widget is created"
)
widget2
=
self
.
create
(
class_
=
'Foo'
)
self
.
assertEqual
(
widget2
[
'class'
],
'Foo'
)
def
test_colormap
(
self
):
widget
=
self
.
create
()
self
.
assertEqual
(
widget
[
'colormap'
],
''
)
self
.
checkInvalidParam
(
widget
,
'colormap'
,
'new'
,
errmsg
=
"can't modify -colormap option after widget is created"
)
widget2
=
self
.
create
(
colormap
=
'new'
)
self
.
assertEqual
(
widget2
[
'colormap'
],
'new'
)
def
test_container
(
self
):
widget
=
self
.
create
()
self
.
assertEqual
(
widget
[
'container'
],
0
if
self
.
wantobjects
else
'0'
)
self
.
checkInvalidParam
(
widget
,
'container'
,
1
,
errmsg
=
"can't modify -container option after widget is created"
)
widget2
=
self
.
create
(
container
=
True
)
self
.
assertEqual
(
widget2
[
'container'
],
1
if
self
.
wantobjects
else
'1'
)
def
test_visual
(
self
):
widget
=
self
.
create
()
self
.
assertEqual
(
widget
[
'visual'
],
''
)
self
.
checkInvalidParam
(
widget
,
'visual'
,
'default'
,
errmsg
=
"can't modify -visual option after widget is created"
)
widget2
=
self
.
create
(
visual
=
'default'
)
self
.
assertEqual
(
widget2
[
'visual'
],
'default'
)
@
add_standard_options
(
StandardOptionsTests
)
class
ToplevelTest
(
AbstractToplevelTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'background'
,
'borderwidth'
,
'class'
,
'colormap'
,
'container'
,
'cursor'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'menu'
,
'padx'
,
'pady'
,
'relief'
,
'screen'
,
'takefocus'
,
'use'
,
'visual'
,
'width'
,
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Toplevel
(
self
.
root
,
**
kwargs
)
def
test_menu
(
self
):
widget
=
self
.
create
()
menu
=
tkinter
.
Menu
(
self
.
root
)
self
.
checkParam
(
widget
,
'menu'
,
menu
,
eq
=
widget_eq
)
self
.
checkParam
(
widget
,
'menu'
,
''
)
def
test_screen
(
self
):
widget
=
self
.
create
()
self
.
assertEqual
(
widget
[
'screen'
],
''
)
try
:
display
=
os
.
environ
[
'DISPLAY'
]
except
KeyError
:
self
.
skipTest
(
'No $DISPLAY set.'
)
self
.
checkInvalidParam
(
widget
,
'screen'
,
display
,
errmsg
=
"can't modify -screen option after widget is created"
)
widget2
=
self
.
create
(
screen
=
display
)
self
.
assertEqual
(
widget2
[
'screen'
],
display
)
def
test_use
(
self
):
widget
=
self
.
create
()
self
.
assertEqual
(
widget
[
'use'
],
''
)
parent
=
self
.
create
(
container
=
True
)
wid
=
hex
(
parent
.
winfo_id
())
with
self
.
subTest
(
wid
=
wid
):
widget2
=
self
.
create
(
use
=
wid
)
self
.
assertEqual
(
widget2
[
'use'
],
wid
)
@
add_standard_options
(
StandardOptionsTests
)
class
FrameTest
(
AbstractToplevelTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'background'
,
'borderwidth'
,
'class'
,
'colormap'
,
'container'
,
'cursor'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'padx'
,
'pady'
,
'relief'
,
'takefocus'
,
'visual'
,
'width'
,
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Frame
(
self
.
root
,
**
kwargs
)
@
add_standard_options
(
StandardOptionsTests
)
class
LabelFrameTest
(
AbstractToplevelTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'background'
,
'borderwidth'
,
'class'
,
'colormap'
,
'container'
,
'cursor'
,
'font'
,
'foreground'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'labelanchor'
,
'labelwidget'
,
'padx'
,
'pady'
,
'relief'
,
'takefocus'
,
'text'
,
'visual'
,
'width'
,
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
LabelFrame
(
self
.
root
,
**
kwargs
)
def
test_labelanchor
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'labelanchor'
,
'e'
,
'en'
,
'es'
,
'n'
,
'ne'
,
'nw'
,
's'
,
'se'
,
'sw'
,
'w'
,
'wn'
,
'ws'
)
self
.
checkInvalidParam
(
widget
,
'labelanchor'
,
'center'
)
def
test_labelwidget
(
self
):
widget
=
self
.
create
()
label
=
tkinter
.
Label
(
self
.
root
,
text
=
'Mupp'
,
name
=
'foo'
)
self
.
checkParam
(
widget
,
'labelwidget'
,
label
,
expected
=
'.foo'
)
label
.
destroy
()
class
AbstractLabelTest
(
AbstractWidgetTest
,
IntegerSizeTests
):
_conv_pixels
=
noconv
def
test_highlightthickness
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'highlightthickness'
,
0
,
1.3
,
2.6
,
6
,
-
2
,
'10p'
)
@
add_standard_options
(
StandardOptionsTests
)
class
LabelTest
(
AbstractLabelTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activebackground'
,
'activeforeground'
,
'anchor'
,
'background'
,
'bitmap'
,
'borderwidth'
,
'compound'
,
'cursor'
,
'disabledforeground'
,
'font'
,
'foreground'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'image'
,
'justify'
,
'padx'
,
'pady'
,
'relief'
,
'state'
,
'takefocus'
,
'text'
,
'textvariable'
,
'underline'
,
'width'
,
'wraplength'
,
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Label
(
self
.
root
,
**
kwargs
)
@
add_standard_options
(
StandardOptionsTests
)
class
ButtonTest
(
AbstractLabelTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activebackground'
,
'activeforeground'
,
'anchor'
,
'background'
,
'bitmap'
,
'borderwidth'
,
'command'
,
'compound'
,
'cursor'
,
'default'
,
'disabledforeground'
,
'font'
,
'foreground'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'image'
,
'justify'
,
'overrelief'
,
'padx'
,
'pady'
,
'relief'
,
'repeatdelay'
,
'repeatinterval'
,
'state'
,
'takefocus'
,
'text'
,
'textvariable'
,
'underline'
,
'width'
,
'wraplength'
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Button
(
self
.
root
,
**
kwargs
)
def
test_default
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'default'
,
'active'
,
'disabled'
,
'normal'
)
@
add_standard_options
(
StandardOptionsTests
)
class
CheckbuttonTest
(
AbstractLabelTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activebackground'
,
'activeforeground'
,
'anchor'
,
'background'
,
'bitmap'
,
'borderwidth'
,
'command'
,
'compound'
,
'cursor'
,
'disabledforeground'
,
'font'
,
'foreground'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'image'
,
'indicatoron'
,
'justify'
,
'offrelief'
,
'offvalue'
,
'onvalue'
,
'overrelief'
,
'padx'
,
'pady'
,
'relief'
,
'selectcolor'
,
'selectimage'
,
'state'
,
'takefocus'
,
'text'
,
'textvariable'
,
'tristateimage'
,
'tristatevalue'
,
'underline'
,
'variable'
,
'width'
,
'wraplength'
,
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Checkbutton
(
self
.
root
,
**
kwargs
)
def
test_offvalue
(
self
):
widget
=
self
.
create
()
self
.
checkParams
(
widget
,
'offvalue'
,
1
,
2.3
,
''
,
'any string'
)
def
test_onvalue
(
self
):
widget
=
self
.
create
()
self
.
checkParams
(
widget
,
'onvalue'
,
1
,
2.3
,
''
,
'any string'
)
@
add_standard_options
(
StandardOptionsTests
)
class
RadiobuttonTest
(
AbstractLabelTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activebackground'
,
'activeforeground'
,
'anchor'
,
'background'
,
'bitmap'
,
'borderwidth'
,
'command'
,
'compound'
,
'cursor'
,
'disabledforeground'
,
'font'
,
'foreground'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'image'
,
'indicatoron'
,
'justify'
,
'offrelief'
,
'overrelief'
,
'padx'
,
'pady'
,
'relief'
,
'selectcolor'
,
'selectimage'
,
'state'
,
'takefocus'
,
'text'
,
'textvariable'
,
'tristateimage'
,
'tristatevalue'
,
'underline'
,
'value'
,
'variable'
,
'width'
,
'wraplength'
,
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Radiobutton
(
self
.
root
,
**
kwargs
)
def
test_value
(
self
):
widget
=
self
.
create
()
self
.
checkParams
(
widget
,
'value'
,
1
,
2.3
,
''
,
'any string'
)
@
add_standard_options
(
StandardOptionsTests
)
class
MenubuttonTest
(
AbstractLabelTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activebackground'
,
'activeforeground'
,
'anchor'
,
'background'
,
'bitmap'
,
'borderwidth'
,
'compound'
,
'cursor'
,
'direction'
,
'disabledforeground'
,
'font'
,
'foreground'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'image'
,
'indicatoron'
,
'justify'
,
'menu'
,
'padx'
,
'pady'
,
'relief'
,
'state'
,
'takefocus'
,
'text'
,
'textvariable'
,
'underline'
,
'width'
,
'wraplength'
,
)
_conv_pixels
=
staticmethod
(
pixels_round
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Menubutton
(
self
.
root
,
**
kwargs
)
def
test_direction
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'direction'
,
'above'
,
'below'
,
'flush'
,
'left'
,
'right'
)
def
test_height
(
self
):
widget
=
self
.
create
()
self
.
checkIntegerParam
(
widget
,
'height'
,
100
,
-
100
,
0
,
conv
=
str
)
test_highlightthickness
=
StandardOptionsTests
.
test_highlightthickness
@
unittest
.
skipIf
(
sys
.
platform
==
'darwin'
,
'crashes with Cocoa Tk (issue19733)'
)
def
test_image
(
self
):
widget
=
self
.
create
()
image
=
tkinter
.
PhotoImage
(
master
=
self
.
root
,
name
=
'image1'
)
self
.
checkParam
(
widget
,
'image'
,
image
,
conv
=
str
)
errmsg
=
'image "spam" doesn
\
'
t exist'
with
self
.
assertRaises
(
tkinter
.
TclError
)
as
cm
:
widget
[
'image'
]
=
'spam'
if
errmsg
is
not
None
:
self
.
assertEqual
(
str
(
cm
.
exception
),
errmsg
)
with
self
.
assertRaises
(
tkinter
.
TclError
)
as
cm
:
widget
.
configure
({
'image'
:
'spam'
})
if
errmsg
is
not
None
:
self
.
assertEqual
(
str
(
cm
.
exception
),
errmsg
)
def
test_menu
(
self
):
widget
=
self
.
create
()
menu
=
tkinter
.
Menu
(
widget
,
name
=
'menu'
)
self
.
checkParam
(
widget
,
'menu'
,
menu
,
eq
=
widget_eq
)
menu
.
destroy
()
def
test_padx
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'padx'
,
3
,
4.4
,
5.6
,
'12m'
)
self
.
checkParam
(
widget
,
'padx'
,
-
2
,
expected
=
0
)
def
test_pady
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'pady'
,
3
,
4.4
,
5.6
,
'12m'
)
self
.
checkParam
(
widget
,
'pady'
,
-
2
,
expected
=
0
)
def
test_width
(
self
):
widget
=
self
.
create
()
self
.
checkIntegerParam
(
widget
,
'width'
,
402
,
-
402
,
0
,
conv
=
str
)
class
OptionMenuTest
(
MenubuttonTest
,
unittest
.
TestCase
):
def
create
(
self
,
default
=
'b'
,
values
=
(
'a'
,
'b'
,
'c'
),
**
kwargs
):
return
tkinter
.
OptionMenu
(
self
.
root
,
None
,
default
,
*
values
,
**
kwargs
)
@
add_standard_options
(
IntegerSizeTests
,
StandardOptionsTests
)
class
EntryTest
(
AbstractWidgetTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'background'
,
'borderwidth'
,
'cursor'
,
'disabledbackground'
,
'disabledforeground'
,
'exportselection'
,
'font'
,
'foreground'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'insertbackground'
,
'insertborderwidth'
,
'insertofftime'
,
'insertontime'
,
'insertwidth'
,
'invalidcommand'
,
'justify'
,
'readonlybackground'
,
'relief'
,
'selectbackground'
,
'selectborderwidth'
,
'selectforeground'
,
'show'
,
'state'
,
'takefocus'
,
'textvariable'
,
'validate'
,
'validatecommand'
,
'width'
,
'xscrollcommand'
,
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Entry
(
self
.
root
,
**
kwargs
)
def
test_disabledbackground
(
self
):
widget
=
self
.
create
()
self
.
checkColorParam
(
widget
,
'disabledbackground'
)
def
test_insertborderwidth
(
self
):
widget
=
self
.
create
(
insertwidth
=
100
)
self
.
checkPixelsParam
(
widget
,
'insertborderwidth'
,
0
,
1.3
,
2.6
,
6
,
-
2
,
'10p'
)
# insertborderwidth is bounded above by a half of insertwidth.
self
.
checkParam
(
widget
,
'insertborderwidth'
,
60
,
expected
=
100
//
2
)
def
test_insertwidth
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'insertwidth'
,
1.3
,
3.6
,
'10p'
)
self
.
checkParam
(
widget
,
'insertwidth'
,
0.1
,
expected
=
2
)
self
.
checkParam
(
widget
,
'insertwidth'
,
-
2
,
expected
=
2
)
if
pixels_round
(
0.9
)
<=
0
:
self
.
checkParam
(
widget
,
'insertwidth'
,
0.9
,
expected
=
2
)
else
:
self
.
checkParam
(
widget
,
'insertwidth'
,
0.9
,
expected
=
1
)
def
test_invalidcommand
(
self
):
widget
=
self
.
create
()
self
.
checkCommandParam
(
widget
,
'invalidcommand'
)
self
.
checkCommandParam
(
widget
,
'invcmd'
)
def
test_readonlybackground
(
self
):
widget
=
self
.
create
()
self
.
checkColorParam
(
widget
,
'readonlybackground'
)
def
test_show
(
self
):
widget
=
self
.
create
()
self
.
checkParam
(
widget
,
'show'
,
'*'
)
self
.
checkParam
(
widget
,
'show'
,
''
)
self
.
checkParam
(
widget
,
'show'
,
' '
)
def
test_state
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'state'
,
'disabled'
,
'normal'
,
'readonly'
)
def
test_validate
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'validate'
,
'all'
,
'key'
,
'focus'
,
'focusin'
,
'focusout'
,
'none'
)
def
test_validatecommand
(
self
):
widget
=
self
.
create
()
self
.
checkCommandParam
(
widget
,
'validatecommand'
)
self
.
checkCommandParam
(
widget
,
'vcmd'
)
@
add_standard_options
(
StandardOptionsTests
)
class
SpinboxTest
(
EntryTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activebackground'
,
'background'
,
'borderwidth'
,
'buttonbackground'
,
'buttoncursor'
,
'buttondownrelief'
,
'buttonuprelief'
,
'command'
,
'cursor'
,
'disabledbackground'
,
'disabledforeground'
,
'exportselection'
,
'font'
,
'foreground'
,
'format'
,
'from'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'increment'
,
'insertbackground'
,
'insertborderwidth'
,
'insertofftime'
,
'insertontime'
,
'insertwidth'
,
'invalidcommand'
,
'justify'
,
'relief'
,
'readonlybackground'
,
'repeatdelay'
,
'repeatinterval'
,
'selectbackground'
,
'selectborderwidth'
,
'selectforeground'
,
'state'
,
'takefocus'
,
'textvariable'
,
'to'
,
'validate'
,
'validatecommand'
,
'values'
,
'width'
,
'wrap'
,
'xscrollcommand'
,
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Spinbox
(
self
.
root
,
**
kwargs
)
test_show
=
None
def
test_buttonbackground
(
self
):
widget
=
self
.
create
()
self
.
checkColorParam
(
widget
,
'buttonbackground'
)
def
test_buttoncursor
(
self
):
widget
=
self
.
create
()
self
.
checkCursorParam
(
widget
,
'buttoncursor'
)
def
test_buttondownrelief
(
self
):
widget
=
self
.
create
()
self
.
checkReliefParam
(
widget
,
'buttondownrelief'
)
def
test_buttonuprelief
(
self
):
widget
=
self
.
create
()
self
.
checkReliefParam
(
widget
,
'buttonuprelief'
)
def
test_format
(
self
):
widget
=
self
.
create
()
self
.
checkParam
(
widget
,
'format'
,
'%2f'
)
self
.
checkParam
(
widget
,
'format'
,
'%2.2f'
)
self
.
checkParam
(
widget
,
'format'
,
'%.2f'
)
self
.
checkParam
(
widget
,
'format'
,
'%2.f'
)
self
.
checkInvalidParam
(
widget
,
'format'
,
'%2e-1f'
)
self
.
checkInvalidParam
(
widget
,
'format'
,
'2.2'
)
self
.
checkInvalidParam
(
widget
,
'format'
,
'%2.-2f'
)
self
.
checkParam
(
widget
,
'format'
,
'%-2.02f'
)
self
.
checkParam
(
widget
,
'format'
,
'% 2.02f'
)
self
.
checkParam
(
widget
,
'format'
,
'% -2.200f'
)
self
.
checkParam
(
widget
,
'format'
,
'%09.200f'
)
self
.
checkInvalidParam
(
widget
,
'format'
,
'%d'
)
def
test_from
(
self
):
widget
=
self
.
create
()
self
.
checkParam
(
widget
,
'to'
,
100.0
)
self
.
checkFloatParam
(
widget
,
'from'
,
-
10
,
10.2
,
11.7
)
self
.
checkInvalidParam
(
widget
,
'from'
,
200
,
errmsg
=
'-to value must be greater than -from value'
)
def
test_increment
(
self
):
widget
=
self
.
create
()
self
.
checkFloatParam
(
widget
,
'increment'
,
-
1
,
1
,
10.2
,
12.8
,
0
)
def
test_to
(
self
):
widget
=
self
.
create
()
self
.
checkParam
(
widget
,
'from'
,
-
100.0
)
self
.
checkFloatParam
(
widget
,
'to'
,
-
10
,
10.2
,
11.7
)
self
.
checkInvalidParam
(
widget
,
'to'
,
-
200
,
errmsg
=
'-to value must be greater than -from value'
)
def
test_values
(
self
):
# XXX
widget
=
self
.
create
()
self
.
assertEqual
(
widget
[
'values'
],
''
)
self
.
checkParam
(
widget
,
'values'
,
'mon tue wed thur'
)
self
.
checkParam
(
widget
,
'values'
,
(
'mon'
,
'tue'
,
'wed'
,
'thur'
),
expected
=
'mon tue wed thur'
)
self
.
checkParam
(
widget
,
'values'
,
(
42
,
3.14
,
''
,
'any string'
),
expected
=
'42 3.14 {} {any string}'
)
self
.
checkParam
(
widget
,
'values'
,
''
)
def
test_wrap
(
self
):
widget
=
self
.
create
()
self
.
checkBooleanParam
(
widget
,
'wrap'
)
def
test_bbox
(
self
):
widget
=
self
.
create
()
self
.
assertIsBoundingBox
(
widget
.
bbox
(
0
))
self
.
assertRaises
(
tkinter
.
TclError
,
widget
.
bbox
,
'noindex'
)
self
.
assertRaises
(
tkinter
.
TclError
,
widget
.
bbox
,
None
)
self
.
assertRaises
(
TypeError
,
widget
.
bbox
)
self
.
assertRaises
(
TypeError
,
widget
.
bbox
,
0
,
1
)
@
add_standard_options
(
StandardOptionsTests
)
class
TextTest
(
AbstractWidgetTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'autoseparators'
,
'background'
,
'blockcursor'
,
'borderwidth'
,
'cursor'
,
'endline'
,
'exportselection'
,
'font'
,
'foreground'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'inactiveselectbackground'
,
'insertbackground'
,
'insertborderwidth'
,
'insertofftime'
,
'insertontime'
,
'insertunfocussed'
,
'insertwidth'
,
'maxundo'
,
'padx'
,
'pady'
,
'relief'
,
'selectbackground'
,
'selectborderwidth'
,
'selectforeground'
,
'setgrid'
,
'spacing1'
,
'spacing2'
,
'spacing3'
,
'startline'
,
'state'
,
'tabs'
,
'tabstyle'
,
'takefocus'
,
'undo'
,
'width'
,
'wrap'
,
'xscrollcommand'
,
'yscrollcommand'
,
)
if
tcl_version
<
(
8
,
5
):
_stringify
=
True
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Text
(
self
.
root
,
**
kwargs
)
def
test_autoseparators
(
self
):
widget
=
self
.
create
()
self
.
checkBooleanParam
(
widget
,
'autoseparators'
)
@
requires_tcl
(
8
,
5
)
def
test_blockcursor
(
self
):
widget
=
self
.
create
()
self
.
checkBooleanParam
(
widget
,
'blockcursor'
)
@
requires_tcl
(
8
,
5
)
def
test_endline
(
self
):
widget
=
self
.
create
()
text
=
'
\
n
'
.
join
(
'Line %d'
for
i
in
range
(
100
))
widget
.
insert
(
'end'
,
text
)
self
.
checkParam
(
widget
,
'endline'
,
200
,
expected
=
''
)
self
.
checkParam
(
widget
,
'endline'
,
-
10
,
expected
=
''
)
self
.
checkInvalidParam
(
widget
,
'endline'
,
'spam'
,
errmsg
=
'expected integer but got "spam"'
)
self
.
checkParam
(
widget
,
'endline'
,
50
)
self
.
checkParam
(
widget
,
'startline'
,
15
)
self
.
checkInvalidParam
(
widget
,
'endline'
,
10
,
errmsg
=
'-startline must be less than or equal to -endline'
)
def
test_height
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'height'
,
100
,
101.2
,
102.6
,
'3c'
)
self
.
checkParam
(
widget
,
'height'
,
-
100
,
expected
=
1
)
self
.
checkParam
(
widget
,
'height'
,
0
,
expected
=
1
)
def
test_maxundo
(
self
):
widget
=
self
.
create
()
self
.
checkIntegerParam
(
widget
,
'maxundo'
,
0
,
5
,
-
1
)
@
requires_tcl
(
8
,
5
)
def
test_inactiveselectbackground
(
self
):
widget
=
self
.
create
()
self
.
checkColorParam
(
widget
,
'inactiveselectbackground'
)
@
requires_tcl
(
8
,
6
)
def
test_insertunfocussed
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'insertunfocussed'
,
'hollow'
,
'none'
,
'solid'
)
def
test_selectborderwidth
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'selectborderwidth'
,
1.3
,
2.6
,
-
2
,
'10p'
,
conv
=
noconv
,
keep_orig
=
tcl_version
>=
(
8
,
5
))
def
test_spacing1
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'spacing1'
,
20
,
21.4
,
22.6
,
'0.5c'
)
self
.
checkParam
(
widget
,
'spacing1'
,
-
5
,
expected
=
0
)
def
test_spacing2
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'spacing2'
,
5
,
6.4
,
7.6
,
'0.1c'
)
self
.
checkParam
(
widget
,
'spacing2'
,
-
1
,
expected
=
0
)
def
test_spacing3
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'spacing3'
,
20
,
21.4
,
22.6
,
'0.5c'
)
self
.
checkParam
(
widget
,
'spacing3'
,
-
10
,
expected
=
0
)
@
requires_tcl
(
8
,
5
)
def
test_startline
(
self
):
widget
=
self
.
create
()
text
=
'
\
n
'
.
join
(
'Line %d'
for
i
in
range
(
100
))
widget
.
insert
(
'end'
,
text
)
self
.
checkParam
(
widget
,
'startline'
,
200
,
expected
=
''
)
self
.
checkParam
(
widget
,
'startline'
,
-
10
,
expected
=
''
)
self
.
checkInvalidParam
(
widget
,
'startline'
,
'spam'
,
errmsg
=
'expected integer but got "spam"'
)
self
.
checkParam
(
widget
,
'startline'
,
10
)
self
.
checkParam
(
widget
,
'endline'
,
50
)
self
.
checkInvalidParam
(
widget
,
'startline'
,
70
,
errmsg
=
'-startline must be less than or equal to -endline'
)
def
test_state
(
self
):
widget
=
self
.
create
()
if
tcl_version
<
(
8
,
5
):
self
.
checkParams
(
widget
,
'state'
,
'disabled'
,
'normal'
)
else
:
self
.
checkEnumParam
(
widget
,
'state'
,
'disabled'
,
'normal'
)
def
test_tabs
(
self
):
widget
=
self
.
create
()
if
get_tk_patchlevel
()
<
(
8
,
5
,
11
):
self
.
checkParam
(
widget
,
'tabs'
,
(
10.2
,
20.7
,
'1i'
,
'2i'
),
expected
=
(
'10.2'
,
'20.7'
,
'1i'
,
'2i'
))
else
:
self
.
checkParam
(
widget
,
'tabs'
,
(
10.2
,
20.7
,
'1i'
,
'2i'
))
self
.
checkParam
(
widget
,
'tabs'
,
'10.2 20.7 1i 2i'
,
expected
=
(
'10.2'
,
'20.7'
,
'1i'
,
'2i'
))
self
.
checkParam
(
widget
,
'tabs'
,
'2c left 4c 6c center'
,
expected
=
(
'2c'
,
'left'
,
'4c'
,
'6c'
,
'center'
))
self
.
checkInvalidParam
(
widget
,
'tabs'
,
'spam'
,
errmsg
=
'bad screen distance "spam"'
,
keep_orig
=
tcl_version
>=
(
8
,
5
))
@
requires_tcl
(
8
,
5
)
def
test_tabstyle
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'tabstyle'
,
'tabular'
,
'wordprocessor'
)
def
test_undo
(
self
):
widget
=
self
.
create
()
self
.
checkBooleanParam
(
widget
,
'undo'
)
def
test_width
(
self
):
widget
=
self
.
create
()
self
.
checkIntegerParam
(
widget
,
'width'
,
402
)
self
.
checkParam
(
widget
,
'width'
,
-
402
,
expected
=
1
)
self
.
checkParam
(
widget
,
'width'
,
0
,
expected
=
1
)
def
test_wrap
(
self
):
widget
=
self
.
create
()
if
tcl_version
<
(
8
,
5
):
self
.
checkParams
(
widget
,
'wrap'
,
'char'
,
'none'
,
'word'
)
else
:
self
.
checkEnumParam
(
widget
,
'wrap'
,
'char'
,
'none'
,
'word'
)
def
test_bbox
(
self
):
widget
=
self
.
create
()
self
.
assertIsBoundingBox
(
widget
.
bbox
(
'1.1'
))
self
.
assertIsNone
(
widget
.
bbox
(
'end'
))
self
.
assertRaises
(
tkinter
.
TclError
,
widget
.
bbox
,
'noindex'
)
self
.
assertRaises
(
tkinter
.
TclError
,
widget
.
bbox
,
None
)
self
.
assertRaises
(
TypeError
,
widget
.
bbox
)
self
.
assertRaises
(
TypeError
,
widget
.
bbox
,
'1.1'
,
'end'
)
@
add_standard_options
(
PixelSizeTests
,
StandardOptionsTests
)
class
CanvasTest
(
AbstractWidgetTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'background'
,
'borderwidth'
,
'closeenough'
,
'confine'
,
'cursor'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'insertbackground'
,
'insertborderwidth'
,
'insertofftime'
,
'insertontime'
,
'insertwidth'
,
'offset'
,
'relief'
,
'scrollregion'
,
'selectbackground'
,
'selectborderwidth'
,
'selectforeground'
,
'state'
,
'takefocus'
,
'xscrollcommand'
,
'xscrollincrement'
,
'yscrollcommand'
,
'yscrollincrement'
,
'width'
,
)
_conv_pixels
=
round
_stringify
=
True
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Canvas
(
self
.
root
,
**
kwargs
)
def
test_closeenough
(
self
):
widget
=
self
.
create
()
self
.
checkFloatParam
(
widget
,
'closeenough'
,
24
,
2.4
,
3.6
,
-
3
,
conv
=
float
)
def
test_confine
(
self
):
widget
=
self
.
create
()
self
.
checkBooleanParam
(
widget
,
'confine'
)
def
test_offset
(
self
):
widget
=
self
.
create
()
self
.
assertEqual
(
widget
[
'offset'
],
'0,0'
)
self
.
checkParams
(
widget
,
'offset'
,
'n'
,
'ne'
,
'e'
,
'se'
,
's'
,
'sw'
,
'w'
,
'nw'
,
'center'
)
self
.
checkParam
(
widget
,
'offset'
,
'10,20'
)
self
.
checkParam
(
widget
,
'offset'
,
'#5,6'
)
self
.
checkInvalidParam
(
widget
,
'offset'
,
'spam'
)
def
test_scrollregion
(
self
):
widget
=
self
.
create
()
self
.
checkParam
(
widget
,
'scrollregion'
,
'0 0 200 150'
)
self
.
checkParam
(
widget
,
'scrollregion'
,
(
0
,
0
,
200
,
150
),
expected
=
'0 0 200 150'
)
self
.
checkParam
(
widget
,
'scrollregion'
,
''
)
self
.
checkInvalidParam
(
widget
,
'scrollregion'
,
'spam'
,
errmsg
=
'bad scrollRegion "spam"'
)
self
.
checkInvalidParam
(
widget
,
'scrollregion'
,
(
0
,
0
,
200
,
'spam'
))
self
.
checkInvalidParam
(
widget
,
'scrollregion'
,
(
0
,
0
,
200
))
self
.
checkInvalidParam
(
widget
,
'scrollregion'
,
(
0
,
0
,
200
,
150
,
0
))
def
test_state
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'state'
,
'disabled'
,
'normal'
,
errmsg
=
'bad state value "{}": must be normal or disabled'
)
def
test_xscrollincrement
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'xscrollincrement'
,
40
,
0
,
41.2
,
43.6
,
-
40
,
'0.5i'
)
def
test_yscrollincrement
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'yscrollincrement'
,
10
,
0
,
11.2
,
13.6
,
-
10
,
'0.1i'
)
@
add_standard_options
(
IntegerSizeTests
,
StandardOptionsTests
)
class
ListboxTest
(
AbstractWidgetTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activestyle'
,
'background'
,
'borderwidth'
,
'cursor'
,
'disabledforeground'
,
'exportselection'
,
'font'
,
'foreground'
,
'height'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'justify'
,
'listvariable'
,
'relief'
,
'selectbackground'
,
'selectborderwidth'
,
'selectforeground'
,
'selectmode'
,
'setgrid'
,
'state'
,
'takefocus'
,
'width'
,
'xscrollcommand'
,
'yscrollcommand'
,
)
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Listbox
(
self
.
root
,
**
kwargs
)
def
test_activestyle
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'activestyle'
,
'dotbox'
,
'none'
,
'underline'
)
@
requires_tcl
(
8
,
6
,
5
)
def
test_justify
(
self
):
AbstractWidgetTest
.
test_justify
(
self
)
def
test_listvariable
(
self
):
widget
=
self
.
create
()
var
=
tkinter
.
DoubleVar
(
self
.
root
)
self
.
checkVariableParam
(
widget
,
'listvariable'
,
var
)
def
test_selectmode
(
self
):
widget
=
self
.
create
()
self
.
checkParam
(
widget
,
'selectmode'
,
'single'
)
self
.
checkParam
(
widget
,
'selectmode'
,
'browse'
)
self
.
checkParam
(
widget
,
'selectmode'
,
'multiple'
)
self
.
checkParam
(
widget
,
'selectmode'
,
'extended'
)
def
test_state
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'state'
,
'disabled'
,
'normal'
)
def
test_itemconfigure
(
self
):
widget
=
self
.
create
()
with
self
.
assertRaisesRegex
(
TclError
,
'item number "0" out of range'
):
widget
.
itemconfigure
(
0
)
colors
=
'red orange yellow green blue white violet'
.
split
()
widget
.
insert
(
'end'
,
*
colors
)
for
i
,
color
in
enumerate
(
colors
):
widget
.
itemconfigure
(
i
,
background
=
color
)
with
self
.
assertRaises
(
TypeError
):
widget
.
itemconfigure
()
with
self
.
assertRaisesRegex
(
TclError
,
'bad listbox index "red"'
):
widget
.
itemconfigure
(
'red'
)
self
.
assertEqual
(
widget
.
itemconfigure
(
0
,
'background'
),
(
'background'
,
'background'
,
'Background'
,
''
,
'red'
))
self
.
assertEqual
(
widget
.
itemconfigure
(
'end'
,
'background'
),
(
'background'
,
'background'
,
'Background'
,
''
,
'violet'
))
self
.
assertEqual
(
widget
.
itemconfigure
(
'@0,0'
,
'background'
),
(
'background'
,
'background'
,
'Background'
,
''
,
'red'
))
d
=
widget
.
itemconfigure
(
0
)
self
.
assertIsInstance
(
d
,
dict
)
for
k
,
v
in
d
.
items
():
self
.
assertIn
(
len
(
v
),
(
2
,
5
))
if
len
(
v
)
==
5
:
self
.
assertEqual
(
v
,
widget
.
itemconfigure
(
0
,
k
))
self
.
assertEqual
(
v
[
4
],
widget
.
itemcget
(
0
,
k
))
def
check_itemconfigure
(
self
,
name
,
value
):
widget
=
self
.
create
()
widget
.
insert
(
'end'
,
'a'
,
'b'
,
'c'
,
'd'
)
widget
.
itemconfigure
(
0
,
**
{
name
:
value
})
self
.
assertEqual
(
widget
.
itemconfigure
(
0
,
name
)[
4
],
value
)
self
.
assertEqual
(
widget
.
itemcget
(
0
,
name
),
value
)
with
self
.
assertRaisesRegex
(
TclError
,
'unknown color name "spam"'
):
widget
.
itemconfigure
(
0
,
**
{
name
:
'spam'
})
def
test_itemconfigure_background
(
self
):
self
.
check_itemconfigure
(
'background'
,
'#ff0000'
)
def
test_itemconfigure_bg
(
self
):
self
.
check_itemconfigure
(
'bg'
,
'#ff0000'
)
def
test_itemconfigure_fg
(
self
):
self
.
check_itemconfigure
(
'fg'
,
'#110022'
)
def
test_itemconfigure_foreground
(
self
):
self
.
check_itemconfigure
(
'foreground'
,
'#110022'
)
def
test_itemconfigure_selectbackground
(
self
):
self
.
check_itemconfigure
(
'selectbackground'
,
'#110022'
)
def
test_itemconfigure_selectforeground
(
self
):
self
.
check_itemconfigure
(
'selectforeground'
,
'#654321'
)
def
test_box
(
self
):
lb
=
self
.
create
()
lb
.
insert
(
0
,
*
(
'el%d'
%
i
for
i
in
range
(
8
)))
lb
.
pack
()
self
.
assertIsBoundingBox
(
lb
.
bbox
(
0
))
self
.
assertIsNone
(
lb
.
bbox
(
-
1
))
self
.
assertIsNone
(
lb
.
bbox
(
10
))
self
.
assertRaises
(
TclError
,
lb
.
bbox
,
'noindex'
)
self
.
assertRaises
(
TclError
,
lb
.
bbox
,
None
)
self
.
assertRaises
(
TypeError
,
lb
.
bbox
)
self
.
assertRaises
(
TypeError
,
lb
.
bbox
,
0
,
1
)
def
test_curselection
(
self
):
lb
=
self
.
create
()
lb
.
insert
(
0
,
*
(
'el%d'
%
i
for
i
in
range
(
8
)))
lb
.
selection_clear
(
0
,
tkinter
.
END
)
lb
.
selection_set
(
2
,
4
)
lb
.
selection_set
(
6
)
self
.
assertEqual
(
lb
.
curselection
(),
(
2
,
3
,
4
,
6
))
self
.
assertRaises
(
TypeError
,
lb
.
curselection
,
0
)
def
test_get
(
self
):
lb
=
self
.
create
()
lb
.
insert
(
0
,
*
(
'el%d'
%
i
for
i
in
range
(
8
)))
self
.
assertEqual
(
lb
.
get
(
0
),
'el0'
)
self
.
assertEqual
(
lb
.
get
(
3
),
'el3'
)
self
.
assertEqual
(
lb
.
get
(
'end'
),
'el7'
)
self
.
assertEqual
(
lb
.
get
(
8
),
''
)
self
.
assertEqual
(
lb
.
get
(
-
1
),
''
)
self
.
assertEqual
(
lb
.
get
(
3
,
5
),
(
'el3'
,
'el4'
,
'el5'
))
self
.
assertEqual
(
lb
.
get
(
5
,
'end'
),
(
'el5'
,
'el6'
,
'el7'
))
self
.
assertEqual
(
lb
.
get
(
5
,
0
),
())
self
.
assertEqual
(
lb
.
get
(
0
,
0
),
(
'el0'
,))
self
.
assertRaises
(
TclError
,
lb
.
get
,
'noindex'
)
self
.
assertRaises
(
TclError
,
lb
.
get
,
None
)
self
.
assertRaises
(
TypeError
,
lb
.
get
)
self
.
assertRaises
(
TclError
,
lb
.
get
,
'end'
,
'noindex'
)
self
.
assertRaises
(
TypeError
,
lb
.
get
,
1
,
2
,
3
)
self
.
assertRaises
(
TclError
,
lb
.
get
,
2.4
)
@
add_standard_options
(
PixelSizeTests
,
StandardOptionsTests
)
class
ScaleTest
(
AbstractWidgetTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activebackground'
,
'background'
,
'bigincrement'
,
'borderwidth'
,
'command'
,
'cursor'
,
'digits'
,
'font'
,
'foreground'
,
'from'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'label'
,
'length'
,
'orient'
,
'relief'
,
'repeatdelay'
,
'repeatinterval'
,
'resolution'
,
'showvalue'
,
'sliderlength'
,
'sliderrelief'
,
'state'
,
'takefocus'
,
'tickinterval'
,
'to'
,
'troughcolor'
,
'variable'
,
'width'
,
)
default_orient
=
'vertical'
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Scale
(
self
.
root
,
**
kwargs
)
def
test_bigincrement
(
self
):
widget
=
self
.
create
()
self
.
checkFloatParam
(
widget
,
'bigincrement'
,
12.4
,
23.6
,
-
5
)
def
test_digits
(
self
):
widget
=
self
.
create
()
self
.
checkIntegerParam
(
widget
,
'digits'
,
5
,
0
)
def
test_from
(
self
):
widget
=
self
.
create
()
self
.
checkFloatParam
(
widget
,
'from'
,
100
,
14.9
,
15.1
,
conv
=
float_round
)
def
test_label
(
self
):
widget
=
self
.
create
()
self
.
checkParam
(
widget
,
'label'
,
'any string'
)
self
.
checkParam
(
widget
,
'label'
,
''
)
def
test_length
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'length'
,
130
,
131.2
,
135.6
,
'5i'
)
def
test_resolution
(
self
):
widget
=
self
.
create
()
self
.
checkFloatParam
(
widget
,
'resolution'
,
4.2
,
0
,
6.7
,
-
2
)
def
test_showvalue
(
self
):
widget
=
self
.
create
()
self
.
checkBooleanParam
(
widget
,
'showvalue'
)
def
test_sliderlength
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'sliderlength'
,
10
,
11.2
,
15.6
,
-
3
,
'3m'
)
def
test_sliderrelief
(
self
):
widget
=
self
.
create
()
self
.
checkReliefParam
(
widget
,
'sliderrelief'
)
def
test_tickinterval
(
self
):
widget
=
self
.
create
()
self
.
checkFloatParam
(
widget
,
'tickinterval'
,
1
,
4.3
,
7.6
,
0
,
conv
=
float_round
)
self
.
checkParam
(
widget
,
'tickinterval'
,
-
2
,
expected
=
2
,
conv
=
float_round
)
def
test_to
(
self
):
widget
=
self
.
create
()
self
.
checkFloatParam
(
widget
,
'to'
,
300
,
14.9
,
15.1
,
-
10
,
conv
=
float_round
)
@
add_standard_options
(
PixelSizeTests
,
StandardOptionsTests
)
class
ScrollbarTest
(
AbstractWidgetTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activebackground'
,
'activerelief'
,
'background'
,
'borderwidth'
,
'command'
,
'cursor'
,
'elementborderwidth'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'jump'
,
'orient'
,
'relief'
,
'repeatdelay'
,
'repeatinterval'
,
'takefocus'
,
'troughcolor'
,
'width'
,
)
_conv_pixels
=
round
_stringify
=
True
default_orient
=
'vertical'
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Scrollbar
(
self
.
root
,
**
kwargs
)
def
test_activerelief
(
self
):
widget
=
self
.
create
()
self
.
checkReliefParam
(
widget
,
'activerelief'
)
def
test_elementborderwidth
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'elementborderwidth'
,
4.3
,
5.6
,
-
2
,
'1m'
)
def
test_orient
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'orient'
,
'vertical'
,
'horizontal'
,
errmsg
=
'bad orientation "{}": must be vertical or horizontal'
)
def
test_activate
(
self
):
sb
=
self
.
create
()
for
e
in
(
'arrow1'
,
'slider'
,
'arrow2'
):
sb
.
activate
(
e
)
self
.
assertEqual
(
sb
.
activate
(),
e
)
sb
.
activate
(
''
)
self
.
assertIsNone
(
sb
.
activate
())
self
.
assertRaises
(
TypeError
,
sb
.
activate
,
'arrow1'
,
'arrow2'
)
def
test_set
(
self
):
sb
=
self
.
create
()
sb
.
set
(
0.2
,
0.4
)
self
.
assertEqual
(
sb
.
get
(),
(
0.2
,
0.4
))
self
.
assertRaises
(
TclError
,
sb
.
set
,
'abc'
,
'def'
)
self
.
assertRaises
(
TclError
,
sb
.
set
,
0.6
,
'def'
)
self
.
assertRaises
(
TclError
,
sb
.
set
,
0.6
,
None
)
self
.
assertRaises
(
TypeError
,
sb
.
set
,
0.6
)
self
.
assertRaises
(
TypeError
,
sb
.
set
,
0.6
,
0.7
,
0.8
)
@
add_standard_options
(
StandardOptionsTests
)
class
PanedWindowTest
(
AbstractWidgetTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'background'
,
'borderwidth'
,
'cursor'
,
'handlepad'
,
'handlesize'
,
'height'
,
'opaqueresize'
,
'orient'
,
'proxybackground'
,
'proxyborderwidth'
,
'proxyrelief'
,
'relief'
,
'sashcursor'
,
'sashpad'
,
'sashrelief'
,
'sashwidth'
,
'showhandle'
,
'width'
,
)
default_orient
=
'horizontal'
def
create
(
self
,
**
kwargs
):
return
tkinter
.
PanedWindow
(
self
.
root
,
**
kwargs
)
def
test_handlepad
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'handlepad'
,
5
,
6.4
,
7.6
,
-
3
,
'1m'
)
def
test_handlesize
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'handlesize'
,
8
,
9.4
,
10.6
,
-
3
,
'2m'
,
conv
=
noconv
)
def
test_height
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'height'
,
100
,
101.2
,
102.6
,
-
100
,
0
,
'1i'
,
conv
=
noconv
)
def
test_opaqueresize
(
self
):
widget
=
self
.
create
()
self
.
checkBooleanParam
(
widget
,
'opaqueresize'
)
@
requires_tcl
(
8
,
6
,
5
)
def
test_proxybackground
(
self
):
widget
=
self
.
create
()
self
.
checkColorParam
(
widget
,
'proxybackground'
)
@
requires_tcl
(
8
,
6
,
5
)
def
test_proxyborderwidth
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'proxyborderwidth'
,
0
,
1.3
,
2.9
,
6
,
-
2
,
'10p'
,
conv
=
noconv
)
@
requires_tcl
(
8
,
6
,
5
)
def
test_proxyrelief
(
self
):
widget
=
self
.
create
()
self
.
checkReliefParam
(
widget
,
'proxyrelief'
)
def
test_sashcursor
(
self
):
widget
=
self
.
create
()
self
.
checkCursorParam
(
widget
,
'sashcursor'
)
def
test_sashpad
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'sashpad'
,
8
,
1.3
,
2.6
,
-
2
,
'2m'
)
def
test_sashrelief
(
self
):
widget
=
self
.
create
()
self
.
checkReliefParam
(
widget
,
'sashrelief'
)
def
test_sashwidth
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'sashwidth'
,
10
,
11.1
,
15.6
,
-
3
,
'1m'
,
conv
=
noconv
)
def
test_showhandle
(
self
):
widget
=
self
.
create
()
self
.
checkBooleanParam
(
widget
,
'showhandle'
)
def
test_width
(
self
):
widget
=
self
.
create
()
self
.
checkPixelsParam
(
widget
,
'width'
,
402
,
403.4
,
404.6
,
-
402
,
0
,
'5i'
,
conv
=
noconv
)
def
create2
(
self
):
p
=
self
.
create
()
b
=
tkinter
.
Button
(
p
)
c
=
tkinter
.
Button
(
p
)
p
.
add
(
b
)
p
.
add
(
c
)
return
p
,
b
,
c
def
test_paneconfigure
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
assertRaises
(
TypeError
,
p
.
paneconfigure
)
d
=
p
.
paneconfigure
(
b
)
self
.
assertIsInstance
(
d
,
dict
)
for
k
,
v
in
d
.
items
():
self
.
assertEqual
(
len
(
v
),
5
)
self
.
assertEqual
(
v
,
p
.
paneconfigure
(
b
,
k
))
self
.
assertEqual
(
v
[
4
],
p
.
panecget
(
b
,
k
))
def
check_paneconfigure
(
self
,
p
,
b
,
name
,
value
,
expected
,
stringify
=
False
):
conv
=
lambda
x
:
x
if
not
self
.
wantobjects
or
stringify
:
expected
=
str
(
expected
)
if
self
.
wantobjects
and
stringify
:
conv
=
str
p
.
paneconfigure
(
b
,
**
{
name
:
value
})
self
.
assertEqual
(
conv
(
p
.
paneconfigure
(
b
,
name
)[
4
]),
expected
)
self
.
assertEqual
(
conv
(
p
.
panecget
(
b
,
name
)),
expected
)
def
check_paneconfigure_bad
(
self
,
p
,
b
,
name
,
msg
):
with
self
.
assertRaisesRegex
(
TclError
,
msg
):
p
.
paneconfigure
(
b
,
**
{
name
:
'badValue'
})
def
test_paneconfigure_after
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'after'
,
c
,
str
(
c
))
self
.
check_paneconfigure_bad
(
p
,
b
,
'after'
,
'bad window path name "badValue"'
)
def
test_paneconfigure_before
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'before'
,
c
,
str
(
c
))
self
.
check_paneconfigure_bad
(
p
,
b
,
'before'
,
'bad window path name "badValue"'
)
def
test_paneconfigure_height
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'height'
,
10
,
10
,
stringify
=
get_tk_patchlevel
()
<
(
8
,
5
,
11
))
self
.
check_paneconfigure_bad
(
p
,
b
,
'height'
,
'bad screen distance "badValue"'
)
@
requires_tcl
(
8
,
5
)
def
test_paneconfigure_hide
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'hide'
,
False
,
0
)
self
.
check_paneconfigure_bad
(
p
,
b
,
'hide'
,
'expected boolean value but got "badValue"'
)
def
test_paneconfigure_minsize
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'minsize'
,
10
,
10
)
self
.
check_paneconfigure_bad
(
p
,
b
,
'minsize'
,
'bad screen distance "badValue"'
)
def
test_paneconfigure_padx
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'padx'
,
1.3
,
1
)
self
.
check_paneconfigure_bad
(
p
,
b
,
'padx'
,
'bad screen distance "badValue"'
)
def
test_paneconfigure_pady
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'pady'
,
1.3
,
1
)
self
.
check_paneconfigure_bad
(
p
,
b
,
'pady'
,
'bad screen distance "badValue"'
)
def
test_paneconfigure_sticky
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'sticky'
,
'nsew'
,
'nesw'
)
self
.
check_paneconfigure_bad
(
p
,
b
,
'sticky'
,
'bad stickyness value "badValue": must '
'be a string containing zero or more of '
'n, e, s, and w'
)
@
requires_tcl
(
8
,
5
)
def
test_paneconfigure_stretch
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'stretch'
,
'alw'
,
'always'
)
self
.
check_paneconfigure_bad
(
p
,
b
,
'stretch'
,
'bad stretch "badValue": must be '
'always, first, last, middle, or never'
)
def
test_paneconfigure_width
(
self
):
p
,
b
,
c
=
self
.
create2
()
self
.
check_paneconfigure
(
p
,
b
,
'width'
,
10
,
10
,
stringify
=
get_tk_patchlevel
()
<
(
8
,
5
,
11
))
self
.
check_paneconfigure_bad
(
p
,
b
,
'width'
,
'bad screen distance "badValue"'
)
@
add_standard_options
(
StandardOptionsTests
)
class
MenuTest
(
AbstractWidgetTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'activebackground'
,
'activeborderwidth'
,
'activeforeground'
,
'background'
,
'borderwidth'
,
'cursor'
,
'disabledforeground'
,
'font'
,
'foreground'
,
'postcommand'
,
'relief'
,
'selectcolor'
,
'takefocus'
,
'tearoff'
,
'tearoffcommand'
,
'title'
,
'type'
,
)
_conv_pixels
=
noconv
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Menu
(
self
.
root
,
**
kwargs
)
def
test_postcommand
(
self
):
widget
=
self
.
create
()
self
.
checkCommandParam
(
widget
,
'postcommand'
)
def
test_tearoff
(
self
):
widget
=
self
.
create
()
self
.
checkBooleanParam
(
widget
,
'tearoff'
)
def
test_tearoffcommand
(
self
):
widget
=
self
.
create
()
self
.
checkCommandParam
(
widget
,
'tearoffcommand'
)
def
test_title
(
self
):
widget
=
self
.
create
()
self
.
checkParam
(
widget
,
'title'
,
'any string'
)
def
test_type
(
self
):
widget
=
self
.
create
()
self
.
checkEnumParam
(
widget
,
'type'
,
'normal'
,
'tearoff'
,
'menubar'
)
def
test_entryconfigure
(
self
):
m1
=
self
.
create
()
m1
.
add_command
(
label
=
'test'
)
self
.
assertRaises
(
TypeError
,
m1
.
entryconfigure
)
with
self
.
assertRaisesRegex
(
TclError
,
'bad menu entry index "foo"'
):
m1
.
entryconfigure
(
'foo'
)
d
=
m1
.
entryconfigure
(
1
)
self
.
assertIsInstance
(
d
,
dict
)
for
k
,
v
in
d
.
items
():
self
.
assertIsInstance
(
k
,
str
)
self
.
assertIsInstance
(
v
,
tuple
)
self
.
assertEqual
(
len
(
v
),
5
)
self
.
assertEqual
(
v
[
0
],
k
)
self
.
assertEqual
(
m1
.
entrycget
(
1
,
k
),
v
[
4
])
m1
.
destroy
()
def
test_entryconfigure_label
(
self
):
m1
=
self
.
create
()
m1
.
add_command
(
label
=
'test'
)
self
.
assertEqual
(
m1
.
entrycget
(
1
,
'label'
),
'test'
)
m1
.
entryconfigure
(
1
,
label
=
'changed'
)
self
.
assertEqual
(
m1
.
entrycget
(
1
,
'label'
),
'changed'
)
def
test_entryconfigure_variable
(
self
):
m1
=
self
.
create
()
v1
=
tkinter
.
BooleanVar
(
self
.
root
)
v2
=
tkinter
.
BooleanVar
(
self
.
root
)
m1
.
add_checkbutton
(
variable
=
v1
,
onvalue
=
True
,
offvalue
=
False
,
label
=
'Nonsense'
)
self
.
assertEqual
(
str
(
m1
.
entrycget
(
1
,
'variable'
)),
str
(
v1
))
m1
.
entryconfigure
(
1
,
variable
=
v2
)
self
.
assertEqual
(
str
(
m1
.
entrycget
(
1
,
'variable'
)),
str
(
v2
))
@
add_standard_options
(
PixelSizeTests
,
StandardOptionsTests
)
class
MessageTest
(
AbstractWidgetTest
,
unittest
.
TestCase
):
OPTIONS
=
(
'anchor'
,
'aspect'
,
'background'
,
'borderwidth'
,
'cursor'
,
'font'
,
'foreground'
,
'highlightbackground'
,
'highlightcolor'
,
'highlightthickness'
,
'justify'
,
'padx'
,
'pady'
,
'relief'
,
'takefocus'
,
'text'
,
'textvariable'
,
'width'
,
)
_conv_pad_pixels
=
noconv
def
create
(
self
,
**
kwargs
):
return
tkinter
.
Message
(
self
.
root
,
**
kwargs
)
def
test_aspect
(
self
):
widget
=
self
.
create
()
self
.
checkIntegerParam
(
widget
,
'aspect'
,
250
,
0
,
-
300
)
tests_gui
=
(
ButtonTest
,
CanvasTest
,
CheckbuttonTest
,
EntryTest
,
FrameTest
,
LabelFrameTest
,
LabelTest
,
ListboxTest
,
MenubuttonTest
,
MenuTest
,
MessageTest
,
OptionMenuTest
,
PanedWindowTest
,
RadiobuttonTest
,
ScaleTest
,
ScrollbarTest
,
SpinboxTest
,
TextTest
,
ToplevelTest
,
)
if
__name__
==
'__main__'
:
unittest
.
main
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment