1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
# (C) Copyright 2005-2023 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!
import unittest
from traits.api import AbstractViewElement, HasTraits, Int, TraitError
from traits.testing.optional_dependencies import requires_traitsui
@requires_traitsui
class TestViewElements(unittest.TestCase):
def setUp(self):
import traitsui.api
self.toolkit = traitsui.api.toolkit()
def tearDown(self):
del self.toolkit
def test_view_definition(self):
from traitsui.api import View
view = View('count')
class Model(HasTraits):
count = Int
my_view = view
view_elements = Model.class_trait_view_elements()
self.assertEqual(view_elements.content, {'my_view': view})
def test_view_definition_twice(self):
from traitsui.api import View
view = View('count')
class Model(HasTraits):
count = Int
my_view = view
view_elements = Model.class_trait_view_elements()
view_elements2 = Model.class_trait_view_elements()
self.assertEqual(view_elements.content, {'my_view': view})
self.assertIs(view_elements, view_elements2)
def test_view_elements_parents(self):
from traitsui.api import View
class Model(HasTraits):
count = Int
my_view = View('count')
class ModelSubclass(Model):
total = Int
my_view = View('count', 'total')
view_elements = ModelSubclass.class_trait_view_elements()
parent_view_elements = Model.class_trait_view_elements()
self.assertEqual(view_elements.parents[0], parent_view_elements)
def test_instance_view_definition(self):
from traitsui.api import View
view = View('count')
class Model(HasTraits):
count = Int
my_view = view
m = Model()
view_elements = m.trait_view_elements()
self.assertEqual(view_elements.content, {'my_view': view})
def test_trait_views(self):
from traitsui.api import View
view = View('count')
class Model(HasTraits):
count = Int
my_view = view
m = Model()
views = m.trait_views()
self.assertEqual(views, ['my_view'])
def test_included_names(self):
from traitsui.api import Group, Item, View
item = Item('count', id='item_with_id')
group = Group(item)
view = View(Item('count'))
class Model(HasTraits):
count = Int
my_group = group
my_view = view
view_elements = Model.class_trait_view_elements()
self.assertEqual(
view_elements.content,
{'my_view': view, 'my_group': group, 'item_with_id': item}
)
def test_duplicate_names(self):
from traitsui.api import Group, Item, View
class Model(HasTraits):
count = Int
includable = Group(Item('count', id='name_conflict'))
name_conflict = View(Item('count'))
with self.assertRaises(TraitError):
Model.class_trait_view_elements()
def test_view_element_superclass(self):
from traitsui.api import ViewElement
self.assertIsInstance(ViewElement(), AbstractViewElement)
|