���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧� - ���֧էѧܧ�ڧ��ӧѧ�� - /home/ukubnwwtacc0unt/chapelbellstudios.com/uploads/cover/test_tkinter.tar
���ѧ٧ѧ�
test_variables.py 0000644 00000020305 15204341017 0010122 0 ustar 00 import unittest import gc from Tkinter import (Variable, StringVar, IntVar, DoubleVar, BooleanVar, Tcl, TclError) class TestBase(unittest.TestCase): def setUp(self): self.root = Tcl() def tearDown(self): del self.root class TestVariable(TestBase): def info_exists(self, *args): return self.root.getboolean(self.root.call("info", "exists", *args)) def test_default(self): v = Variable(self.root) self.assertEqual("", v.get()) self.assertRegexpMatches(str(v), r"^PY_VAR(\d+)$") def test_name_and_value(self): v = Variable(self.root, "sample string", "varname") self.assertEqual("sample string", v.get()) self.assertEqual("varname", str(v)) def test___del__(self): self.assertFalse(self.info_exists("varname")) v = Variable(self.root, "sample string", "varname") self.assertTrue(self.info_exists("varname")) del v self.assertFalse(self.info_exists("varname")) def test_dont_unset_not_existing(self): self.assertFalse(self.info_exists("varname")) v1 = Variable(self.root, name="name") v2 = Variable(self.root, name="name") del v1 self.assertFalse(self.info_exists("name")) # shouldn't raise exception del v2 self.assertFalse(self.info_exists("name")) def test___eq__(self): # values doesn't matter, only class and name are checked v1 = Variable(self.root, name="abc") v2 = Variable(self.root, name="abc") self.assertEqual(v1, v2) v3 = Variable(self.root, name="abc") v4 = StringVar(self.root, name="abc") self.assertNotEqual(v3, v4) def test_invalid_name(self): with self.assertRaises(TypeError): Variable(self.root, name=123) def test_null_in_name(self): with self.assertRaises(ValueError): Variable(self.root, name='var\x00name') with self.assertRaises(ValueError): self.root.globalsetvar('var\x00name', "value") with self.assertRaises(ValueError): self.root.setvar('var\x00name', "value") def test_trace(self): v = Variable(self.root) vname = str(v) trace = [] def read_tracer(*args): trace.append(('read',) + args) def write_tracer(*args): trace.append(('write',) + args) cb1 = v.trace_variable('r', read_tracer) cb2 = v.trace_variable('wu', write_tracer) self.assertEqual(sorted(v.trace_vinfo()), [('r', cb1), ('wu', cb2)]) self.assertEqual(trace, []) v.set('spam') self.assertEqual(trace, [('write', vname, '', 'w')]) trace = [] v.get() self.assertEqual(trace, [('read', vname, '', 'r')]) trace = [] info = sorted(v.trace_vinfo()) v.trace_vdelete('w', cb1) # Wrong mode self.assertEqual(sorted(v.trace_vinfo()), info) with self.assertRaises(TclError): v.trace_vdelete('r', 'spam') # Wrong command name self.assertEqual(sorted(v.trace_vinfo()), info) v.trace_vdelete('r', (cb1, 43)) # Wrong arguments self.assertEqual(sorted(v.trace_vinfo()), info) v.get() self.assertEqual(trace, [('read', vname, '', 'r')]) trace = [] v.trace_vdelete('r', cb1) self.assertEqual(v.trace_vinfo(), [('wu', cb2)]) v.get() self.assertEqual(trace, []) trace = [] del write_tracer gc.collect() v.set('eggs') self.assertEqual(trace, [('write', vname, '', 'w')]) #trace = [] #del v #gc.collect() #self.assertEqual(trace, [('write', vname, '', 'u')]) class TestStringVar(TestBase): def test_default(self): v = StringVar(self.root) self.assertEqual("", v.get()) def test_get(self): v = StringVar(self.root, "abc", "name") self.assertEqual("abc", v.get()) self.root.globalsetvar("name", "value") self.assertEqual("value", v.get()) def test_get_null(self): v = StringVar(self.root, "abc\x00def", "name") self.assertEqual("abc\x00def", v.get()) self.root.globalsetvar("name", "val\x00ue") self.assertEqual("val\x00ue", v.get()) class TestIntVar(TestBase): def test_default(self): v = IntVar(self.root) self.assertEqual(0, v.get()) def test_get(self): v = IntVar(self.root, 123, "name") self.assertEqual(123, v.get()) self.root.globalsetvar("name", "345") self.assertEqual(345, v.get()) def test_invalid_value(self): v = IntVar(self.root, name="name") self.root.globalsetvar("name", "value") with self.assertRaises(ValueError): v.get() self.root.globalsetvar("name", "345.0") with self.assertRaises(ValueError): v.get() class TestDoubleVar(TestBase): def test_default(self): v = DoubleVar(self.root) self.assertEqual(0.0, v.get()) def test_get(self): v = DoubleVar(self.root, 1.23, "name") self.assertAlmostEqual(1.23, v.get()) self.root.globalsetvar("name", "3.45") self.assertAlmostEqual(3.45, v.get()) def test_get_from_int(self): v = DoubleVar(self.root, 1.23, "name") self.assertAlmostEqual(1.23, v.get()) self.root.globalsetvar("name", "3.45") self.assertAlmostEqual(3.45, v.get()) self.root.globalsetvar("name", "456") self.assertAlmostEqual(456, v.get()) def test_invalid_value(self): v = DoubleVar(self.root, name="name") self.root.globalsetvar("name", "value") with self.assertRaises(ValueError): v.get() class TestBooleanVar(TestBase): def test_default(self): v = BooleanVar(self.root) self.assertIs(v.get(), False) def test_get(self): v = BooleanVar(self.root, True, "name") self.assertIs(v.get(), True) self.root.globalsetvar("name", "0") self.assertIs(v.get(), False) self.root.globalsetvar("name", 42 if self.root.wantobjects() else 1) self.assertIs(v.get(), True) self.root.globalsetvar("name", 0) self.assertIs(v.get(), False) self.root.globalsetvar("name", 42L if self.root.wantobjects() else 1L) self.assertIs(v.get(), True) self.root.globalsetvar("name", 0L) self.assertIs(v.get(), False) self.root.globalsetvar("name", "on") self.assertIs(v.get(), True) self.root.globalsetvar("name", u"0") self.assertIs(v.get(), False) self.root.globalsetvar("name", u"on") self.assertIs(v.get(), True) def test_set(self): true = 1 if self.root.wantobjects() else "1" false = 0 if self.root.wantobjects() else "0" v = BooleanVar(self.root, name="name") v.set(True) self.assertEqual(self.root.globalgetvar("name"), true) v.set("0") self.assertEqual(self.root.globalgetvar("name"), false) v.set(42) self.assertEqual(self.root.globalgetvar("name"), true) v.set(0) self.assertEqual(self.root.globalgetvar("name"), false) v.set(42L) self.assertEqual(self.root.globalgetvar("name"), true) v.set(0L) self.assertEqual(self.root.globalgetvar("name"), false) v.set("on") self.assertEqual(self.root.globalgetvar("name"), true) v.set(u"0") self.assertEqual(self.root.globalgetvar("name"), false) v.set(u"on") self.assertEqual(self.root.globalgetvar("name"), true) def test_invalid_value_domain(self): false = 0 if self.root.wantobjects() else "0" v = BooleanVar(self.root, name="name") with self.assertRaises(TclError): v.set("value") self.assertEqual(self.root.globalgetvar("name"), false) self.root.globalsetvar("name", "value") with self.assertRaises(TclError): v.get() self.root.globalsetvar("name", "1.0") with self.assertRaises(TclError): v.get() tests_gui = (TestVariable, TestStringVar, TestIntVar, TestDoubleVar, TestBooleanVar) if __name__ == "__main__": from test.support import run_unittest run_unittest(*tests_gui) test_misc.pyo 0000644 00000007400 15204341017 0007265 0 ustar 00 � zfc @ s� d d l Z d d l Z d d l m Z m Z d d l m Z e d � d e e j f d � � YZ e f Z e d k r� e e � n d S( i����N( t requirest run_unittest( t AbstractTkTestt guit MiscTestc B s# e Z d � Z d � Z d � Z RS( c s� | j } i d d 6� d d � f d � } | j | j d � � d � d <| j d | � } | j | | j j d d � � | j j | j j d d | � � \ } } | j � | j � d d � | j t j � � | j j | � Wd QXd � d <| j d | d d � } | j � | j � d d � | j d | � } | j | | j j d d � � | j j | j j d d | � � \ } } | j | � | j � d d � | j t j � � | j j | � Wd QXd S( Ni t counti c s | | � d <d S( NR ( ( t startt step( t cbcount( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyt callback s t aftert infoi* i i5 i� ( t roott assertIsNoneR t assertInt tkt callt splitlistt updatet assertEqualt assertRaisest tkintert TclErrort after_cancel( t selfR R t timer1t scriptt _( ( R s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyt test_after s. * * c s� | j } i d d 6� d d � f d � } d � d <| j | � } | j | | j j d d � � | j j | j j d d | � � \ } } | j � | j � d d � | j t j � � | j j | � Wd QXd � d <| j | d d � } | j � | j � d d � | j | � } | j | | j j d d � � | j j | j j d d | � � \ } } | j | � | j � d d � | j t j � � | j j | � Wd QXd S( Ni R i c s | | � d <d S( NR ( ( R R ( R ( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyR 1 s R R i* i i5 ( R t after_idleR R R R t update_idletasksR R R R R ( R R R t idle1R R ( ( R s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyt test_after_idle- s, * * c s | j } i d d 6� � f d � } | j d | � } | j | � } | j t � � | j d � Wd QXd � d <| j j | j j d d | � � \ } } | j j | � | j � d d � | j | � | j t j � � | j j | � Wd QX| j � d d � | j t j � � | j j d d | � Wd QX| j | � d � d <| j j | j j d d | � � \ } } | j j | � | j � d d � | j | � | j t j � � | j j | � Wd QX| j � d d � | j t j � � | j j d d | � Wd QXd S( Ni R c s � d c d 7<d S( NR i ( ( ( R ( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyR Q s i� R R i ( R R R R t ValueErrorR t NoneR R R R R R ( R R R R R R R ( ( R s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyt test_after_cancelM s8 * * ( t __name__t __module__R R R# ( ( ( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyR s # t __main__( t unittestt TkinterR t test.test_supportR R t test_ttk.supportR t TestCaseR t tests_guiR$ ( ( ( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyt <module> s o test_widgets.py 0000644 00000134207 15204341017 0007627 0 ustar 00 import unittest import Tkinter as tkinter from Tkinter import TclError import os import sys from test.test_support import requires, run_unittest from test_ttk.support import (tcl_version, requires_tcl, get_tk_patchlevel, widget_eq) from widget_tests import ( add_standard_options, noconv, noconv_meth, int_round, pixels_round, AbstractWidgetTest, StandardOptionsTests, IntegerSizeTests, PixelSizeTests, setUpModule) requires('gui') class AbstractToplevelTest(AbstractWidgetTest, PixelSizeTests): _conv_pad_pixels = noconv_meth 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) # hex() adds the 'L' suffix for longs wid = '%#x' % parent.winfo_id() 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_meth 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.im_func @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) def test_selection_element(self): widget = self.create() self.assertEqual(widget.selection_element(), "none") widget.selection_element("buttonup") self.assertEqual(widget.selection_element(), "buttonup") widget.selection_element("buttondown") self.assertEqual(widget.selection_element(), "buttondown") @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(tkinter.TclError, widget.bbox) self.assertRaises(tkinter.TclError, 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 = staticmethod(int_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') test_justify = requires_tcl(8, 6, 5)(StandardOptionsTests.test_justify.im_func) 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.assertRaisesRegexp(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.assertRaisesRegexp(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.assertRaisesRegexp(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=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=round) self.checkParam(widget, 'tickinterval', -2, expected=2, conv=round) def test_to(self): widget = self.create() self.checkFloatParam(widget, 'to', 300, 14.9, 15.1, -10, conv=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 = staticmethod(int_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) sb.activate('') self.assertRaises(TypeError, 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(TclError, sb.set, 0.6) self.assertRaises(TclError, 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.assertRaisesRegexp(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_meth 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.assertRaisesRegexp(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_meth 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__': run_unittest(*tests_gui) __init__.py 0000644 00000000000 15204341017 0006640 0 ustar 00 test_text.pyc 0000644 00000003467 15204341017 0007313 0 ustar 00 � zfc @ s� d d l Z d d l Z d d l m Z m Z d d l m Z e d � d e e j f d � � YZ e f Z e d k r� e e � n d S( i����N( t requirest run_unittest( t AbstractTkTestt guit TextTestc B s# e Z d � Z d � Z d � Z RS( c C s, t t | � j � t j | j � | _ d S( N( t superR t setUpt tkintert Textt roott text( t self( ( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyR s c C s� | j } | j � } zJ | j d � | j | j � d � | j d � | j | j � d � Wd | j | � | j | j � | � Xd S( Ni i ( R t debugt assertEqual( R R t olddebug( ( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyt test_debug s c C s� | j } | j t j | j d d � | j t j | j d d � | j t j | j d d � | j t j | j d d � | j d d � | j | j d d d � d � | j | j d d d � d � d S( Ns 1.0t at i s hi-tests -testt ends 1.2t tests 1.3( R t assertRaisesR t TclErrort searcht Nonet insertR ( R R ( ( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyt test_search s ( t __name__t __module__R R R ( ( ( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyR s t __main__( t unittestt TkinterR t test.test_supportR R t test_ttk.supportR t TestCaseR t tests_guiR ( ( ( s: /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyt <module> s $ test_images.py 0000644 00000032050 15204341017 0007417 0 ustar 00 import unittest import Tkinter as tkinter import ttk import test.test_support as support from test_ttk.support import AbstractTkTest, requires_tcl support.requires('gui') class MiscTest(AbstractTkTest, unittest.TestCase): def test_image_types(self): image_types = self.root.image_types() self.assertIsInstance(image_types, tuple) self.assertIn('photo', image_types) self.assertIn('bitmap', image_types) def test_image_names(self): image_names = self.root.image_names() self.assertIsInstance(image_names, tuple) class BitmapImageTest(AbstractTkTest, unittest.TestCase): @classmethod def setUpClass(cls): AbstractTkTest.setUpClass.__func__(cls) cls.testfile = support.findfile('python.xbm', subdir='imghdrdata') def test_create_from_file(self): image = tkinter.BitmapImage('::img::test', master=self.root, foreground='yellow', background='blue', file=self.testfile) self.assertEqual(str(image), '::img::test') self.assertEqual(image.type(), 'bitmap') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertIn('::img::test', self.root.image_names()) del image self.assertNotIn('::img::test', self.root.image_names()) def test_create_from_data(self): with open(self.testfile, 'rb') as f: data = f.read() image = tkinter.BitmapImage('::img::test', master=self.root, foreground='yellow', background='blue', data=data) self.assertEqual(str(image), '::img::test') self.assertEqual(image.type(), 'bitmap') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertIn('::img::test', self.root.image_names()) del image self.assertNotIn('::img::test', self.root.image_names()) def assertEqualStrList(self, actual, expected): self.assertIsInstance(actual, str) self.assertEqual(self.root.splitlist(actual), expected) def test_configure_data(self): image = tkinter.BitmapImage('::img::test', master=self.root) self.assertEqual(image['data'], '-data {} {} {} {}') with open(self.testfile, 'rb') as f: data = f.read() image.configure(data=data) self.assertEqualStrList(image['data'], ('-data', '', '', '', data)) self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image['maskdata'], '-maskdata {} {} {} {}') image.configure(maskdata=data) self.assertEqualStrList(image['maskdata'], ('-maskdata', '', '', '', data)) def test_configure_file(self): image = tkinter.BitmapImage('::img::test', master=self.root) self.assertEqual(image['file'], '-file {} {} {} {}') image.configure(file=self.testfile) self.assertEqualStrList(image['file'], ('-file', '', '', '',self.testfile)) self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image['maskfile'], '-maskfile {} {} {} {}') image.configure(maskfile=self.testfile) self.assertEqualStrList(image['maskfile'], ('-maskfile', '', '', '', self.testfile)) def test_configure_background(self): image = tkinter.BitmapImage('::img::test', master=self.root) self.assertEqual(image['background'], '-background {} {} {} {}') image.configure(background='blue') self.assertEqual(image['background'], '-background {} {} {} blue') def test_configure_foreground(self): image = tkinter.BitmapImage('::img::test', master=self.root) self.assertEqual(image['foreground'], '-foreground {} {} #000000 #000000') image.configure(foreground='yellow') self.assertEqual(image['foreground'], '-foreground {} {} #000000 yellow') class PhotoImageTest(AbstractTkTest, unittest.TestCase): @classmethod def setUpClass(cls): AbstractTkTest.setUpClass.__func__(cls) cls.testfile = support.findfile('python.gif', subdir='imghdrdata') def create(self): return tkinter.PhotoImage('::img::test', master=self.root, file=self.testfile) def colorlist(self, *args): if tkinter.TkVersion >= 8.6 and self.wantobjects: return args else: return tkinter._join(args) def check_create_from_file(self, ext): testfile = support.findfile('python.' + ext, subdir='imghdrdata') image = tkinter.PhotoImage('::img::test', master=self.root, file=testfile) self.assertEqual(str(image), '::img::test') self.assertEqual(image.type(), 'photo') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image['data'], '') self.assertEqual(image['file'], testfile) self.assertIn('::img::test', self.root.image_names()) del image self.assertNotIn('::img::test', self.root.image_names()) def check_create_from_data(self, ext): testfile = support.findfile('python.' + ext, subdir='imghdrdata') with open(testfile, 'rb') as f: data = f.read() image = tkinter.PhotoImage('::img::test', master=self.root, data=data) self.assertEqual(str(image), '::img::test') self.assertEqual(image.type(), 'photo') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image['data'], data if self.wantobjects else data.decode('latin1')) self.assertEqual(image['file'], '') self.assertIn('::img::test', self.root.image_names()) del image self.assertNotIn('::img::test', self.root.image_names()) def test_create_from_ppm_file(self): self.check_create_from_file('ppm') def test_create_from_ppm_data(self): self.check_create_from_data('ppm') def test_create_from_pgm_file(self): self.check_create_from_file('pgm') def test_create_from_pgm_data(self): self.check_create_from_data('pgm') def test_create_from_gif_file(self): self.check_create_from_file('gif') def test_create_from_gif_data(self): self.check_create_from_data('gif') @requires_tcl(8, 6) def test_create_from_png_file(self): self.check_create_from_file('png') @requires_tcl(8, 6) def test_create_from_png_data(self): self.check_create_from_data('png') def test_configure_data(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['data'], '') with open(self.testfile, 'rb') as f: data = f.read() image.configure(data=data) self.assertEqual(image['data'], data if self.wantobjects else data.decode('latin1')) self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) def test_configure_format(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['format'], '') image.configure(file=self.testfile, format='gif') self.assertEqual(image['format'], ('gif',) if self.wantobjects else 'gif') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) def test_configure_file(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['file'], '') image.configure(file=self.testfile) self.assertEqual(image['file'], self.testfile) self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) def test_configure_gamma(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['gamma'], '1.0') image.configure(gamma=2.0) self.assertEqual(image['gamma'], '2.0') def test_configure_width_height(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['width'], '0') self.assertEqual(image['height'], '0') image.configure(width=20) image.configure(height=10) self.assertEqual(image['width'], '20') self.assertEqual(image['height'], '10') self.assertEqual(image.width(), 20) self.assertEqual(image.height(), 10) def test_configure_palette(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['palette'], '') image.configure(palette=256) self.assertEqual(image['palette'], '256') image.configure(palette='3/4/2') self.assertEqual(image['palette'], '3/4/2') def test_blank(self): image = self.create() image.blank() self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image.get(4, 6), self.colorlist(0, 0, 0)) def test_copy(self): image = self.create() image2 = image.copy() self.assertEqual(image2.width(), 16) self.assertEqual(image2.height(), 16) self.assertEqual(image.get(4, 6), image.get(4, 6)) def test_subsample(self): image = self.create() image2 = image.subsample(2, 3) self.assertEqual(image2.width(), 8) self.assertEqual(image2.height(), 6) self.assertEqual(image2.get(2, 2), image.get(4, 6)) image2 = image.subsample(2) self.assertEqual(image2.width(), 8) self.assertEqual(image2.height(), 8) self.assertEqual(image2.get(2, 3), image.get(4, 6)) def test_zoom(self): image = self.create() image2 = image.zoom(2, 3) self.assertEqual(image2.width(), 32) self.assertEqual(image2.height(), 48) self.assertEqual(image2.get(8, 18), image.get(4, 6)) self.assertEqual(image2.get(9, 20), image.get(4, 6)) image2 = image.zoom(2) self.assertEqual(image2.width(), 32) self.assertEqual(image2.height(), 32) self.assertEqual(image2.get(8, 12), image.get(4, 6)) self.assertEqual(image2.get(9, 13), image.get(4, 6)) def test_put(self): image = self.create() image.put('{red green} {blue yellow}', to=(4, 6)) self.assertEqual(image.get(4, 6), self.colorlist(255, 0, 0)) self.assertEqual(image.get(5, 6), self.colorlist(0, 128 if tkinter.TkVersion >= 8.6 else 255, 0)) self.assertEqual(image.get(4, 7), self.colorlist(0, 0, 255)) self.assertEqual(image.get(5, 7), self.colorlist(255, 255, 0)) image.put((('#f00', '#00ff00'), ('#000000fff', '#ffffffff0000'))) self.assertEqual(image.get(0, 0), self.colorlist(255, 0, 0)) self.assertEqual(image.get(1, 0), self.colorlist(0, 255, 0)) self.assertEqual(image.get(0, 1), self.colorlist(0, 0, 255)) self.assertEqual(image.get(1, 1), self.colorlist(255, 255, 0)) def test_get(self): image = self.create() self.assertEqual(image.get(4, 6), self.colorlist(62, 116, 162)) self.assertEqual(image.get(0, 0), self.colorlist(0, 0, 0)) self.assertEqual(image.get(15, 15), self.colorlist(0, 0, 0)) self.assertRaises(tkinter.TclError, image.get, -1, 0) self.assertRaises(tkinter.TclError, image.get, 0, -1) self.assertRaises(tkinter.TclError, image.get, 16, 15) self.assertRaises(tkinter.TclError, image.get, 15, 16) def test_write(self): image = self.create() self.addCleanup(support.unlink, support.TESTFN) image.write(support.TESTFN) image2 = tkinter.PhotoImage('::img::test2', master=self.root, format='ppm', file=support.TESTFN) self.assertEqual(str(image2), '::img::test2') self.assertEqual(image2.type(), 'photo') self.assertEqual(image2.width(), 16) self.assertEqual(image2.height(), 16) self.assertEqual(image2.get(0, 0), image.get(0, 0)) self.assertEqual(image2.get(15, 8), image.get(15, 8)) image.write(support.TESTFN, format='gif', from_coords=(4, 6, 6, 9)) image3 = tkinter.PhotoImage('::img::test3', master=self.root, format='gif', file=support.TESTFN) self.assertEqual(str(image3), '::img::test3') self.assertEqual(image3.type(), 'photo') self.assertEqual(image3.width(), 2) self.assertEqual(image3.height(), 3) self.assertEqual(image3.get(0, 0), image.get(4, 6)) self.assertEqual(image3.get(1, 2), image.get(5, 8)) tests_gui = (MiscTest, BitmapImageTest, PhotoImageTest,) if __name__ == "__main__": support.run_unittest(*tests_gui) __init__.pyo 0000644 00000000220 15204341017 0007023 0 ustar 00 � zfc @ s d S( N( ( ( ( s9 /usr/lib64/python2.7/lib-tk/test/test_tkinter/__init__.pyt <module> t test_variables.pyo 0000644 00000026236 15204341017 0010312 0 ustar 00 � zfc @ s d d l Z d d l Z d d l m Z m Z m Z m Z m Z m Z m Z d e j f d � � YZ d e f d � � YZ d e f d � � YZ d e f d � � YZ d e f d � � YZ d e f d � � YZ e e e e e f Z e d k rd d l m Z e e � n d S( i����N( t Variablet StringVart IntVart DoubleVart BooleanVart Tclt TclErrort TestBasec B s e Z d � Z d � Z RS( c C s t � | _ d S( N( R t root( t self( ( s? /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt setUp s c C s | ` d S( N( R ( R ( ( s? /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt tearDown s ( t __name__t __module__R R ( ( ( s? /usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyR s t TestVariablec B sY e Z d � Z d � Z d � Z d � Z d � Z d � Z d � Z d � Z d � Z RS( c G s"