mirror of https://github.com/chriskiehl/Gooey.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
194 lines
4.8 KiB
194 lines
4.8 KiB
from gooey.gui.widgets import components2
|
|
|
|
__author__ = 'Chris'
|
|
|
|
import unittest
|
|
import wx
|
|
from wx.lib.scrolledpanel import ScrolledPanel
|
|
|
|
TEXT_FIELD = components2.TextField({
|
|
'display_name': 'cool title',
|
|
'help_msg': 'a help message',
|
|
'nargs': '+',
|
|
'commands': ['-f', '--fudge'],
|
|
'choices': []
|
|
})
|
|
|
|
DROPDOWN = components2.Dropdown({
|
|
'display_name': 'cool title',
|
|
'help_msg': 'a help message',
|
|
'nargs': '+',
|
|
'commands': ['-f', '--fudge'],
|
|
'choices': ['one', 'two', 'three']
|
|
})
|
|
|
|
COUNTER = components2.Counter({
|
|
'display_name': 'cool title',
|
|
'help_msg': 'a help message',
|
|
'nargs': '+',
|
|
'commands': ['-f', '--fudge'],
|
|
'choices': []
|
|
})
|
|
|
|
CHECKBOX = components2.CheckBox({
|
|
'display_name': 'cool title',
|
|
'help_msg': 'a help message',
|
|
'nargs': '+',
|
|
'commands': ['-f', '--fudge'],
|
|
'choices': []
|
|
})
|
|
|
|
RADIOGROUP = components2.RadioGroup({
|
|
'display_name': 'mutux options',
|
|
'data': [{
|
|
'help_msg': 'a help message',
|
|
'nargs': '+',
|
|
'commands': ['-f', '--fudge'],
|
|
'choices': []
|
|
}, {
|
|
'help_msg': 'a help message',
|
|
'nargs': '+',
|
|
'commands': ['-g', '--gudge'],
|
|
'choices': []
|
|
}]
|
|
})
|
|
|
|
|
|
class TestPanel(ScrolledPanel):
|
|
def __init__(self, parent, widget):
|
|
ScrolledPanel.__init__(self, parent)
|
|
self.SetupScrolling(scroll_x=False)
|
|
|
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
|
self.widget = widget
|
|
|
|
sizer.Add(self.widget.build(self), 0, wx.EXPAND)
|
|
self.SetSizer(sizer)
|
|
|
|
|
|
class MyFrame(wx.Frame):
|
|
def __init__(self, parent, widget):
|
|
wx.Frame.__init__(self, parent, title="test", size=(320, 240))
|
|
self.SetBackgroundColour('#ffffff')
|
|
self.panel = TestPanel(self, widget)
|
|
self.Show()
|
|
|
|
def get_widget(self):
|
|
return self.panel.widget
|
|
|
|
def close(self):
|
|
self.Destroy()
|
|
|
|
|
|
|
|
class TestComponents(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.app = wx.App(False)
|
|
self.frame = None
|
|
|
|
def tearDown(self):
|
|
# self.app = wx.App(False)
|
|
self.frame.Destroy()
|
|
self.frame = None
|
|
|
|
def test_textfield_returns_option_and_value_else_none(self):
|
|
self.build_test_frame(TEXT_FIELD)
|
|
self.assertTrue(self.get_value() == '')
|
|
self.get_widget().SetLabelText('value')
|
|
self.assertEqual('-f value', self.get_value())
|
|
|
|
|
|
def test_dropdown_returns_option_and_value_else_none(self):
|
|
self.build_test_frame(DROPDOWN)
|
|
self.assertTrue(self.get_value() == '')
|
|
# grab first item from the combo box
|
|
self.frame.get_widget()._GetWidget().SetSelection(0)
|
|
self.assertEqual('-f one', self.get_value())
|
|
|
|
|
|
def test_counter_returns_option_and_value_else_none(self):
|
|
self.build_test_frame(COUNTER)
|
|
self.assertTrue(self.get_value() == '')
|
|
# counter objects stack,
|
|
# so
|
|
# 1 = -f,
|
|
# 4 = -ffff
|
|
self.frame.get_widget()._GetWidget().SetSelection(0)
|
|
self.assertEqual('-f', self.get_value())
|
|
self.frame.get_widget()._GetWidget().SetSelection(4)
|
|
self.assertEqual('-fffff', self.get_value())
|
|
|
|
|
|
def test_checkbox_returns_option_if_checked_else_none(self):
|
|
self.build_test_frame(CHECKBOX)
|
|
self.assertTrue(self.get_value() == '')
|
|
self.frame.get_widget()._GetWidget().SetValue(1)
|
|
self.assertEqual('-f', self.get_value())
|
|
|
|
|
|
def test_radiogroup_returns_option_if_checked_else_none(self):
|
|
self.build_test_frame(RADIOGROUP)
|
|
self.assertTrue(self.get_value() == '')
|
|
# self.frame.get_widget()._GetWidget()[0].SetValue(1)
|
|
# self.assertEqual('-f', self.get_value())
|
|
|
|
|
|
def build_test_frame(self, widget):
|
|
# self.app = wx.App(False)
|
|
self.frame = MyFrame(None, widget)
|
|
|
|
def get_widget(self):
|
|
return self.frame.get_widget()._GetWidget()
|
|
|
|
def get_value(self):
|
|
return self.frame.get_widget().GetValue()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
|
|
|
|
|
|
|
|
# a = {
|
|
# 'required' : [
|
|
# {
|
|
# 'component': 'TextField',
|
|
# 'data': {
|
|
# 'display_name': 'filename',
|
|
# 'help_text': 'path to file you want to process',
|
|
# 'command_args': ['-f', '--infile']
|
|
# }
|
|
# },
|
|
# {
|
|
# 'component': 'FileChooser',
|
|
# 'data': {
|
|
# 'display_name': 'Output Location',
|
|
# 'help_text': 'Where to save the file',
|
|
# 'command_args': ['-o', '--outfile']
|
|
# }
|
|
# }
|
|
# ],
|
|
# 'optional' : [
|
|
# {
|
|
# 'component': 'RadioGroup',
|
|
# 'data': [
|
|
# {
|
|
# 'display_name': 'Output Location',
|
|
# 'help_text': 'Where to save the file',
|
|
# 'command_args': ['-o', '--outfile']
|
|
# }, {
|
|
# 'display_name': 'Output Location',
|
|
# 'help_text': 'Where to save the file',
|
|
# 'command_args': ['-o', '--outfile']
|
|
# }
|
|
# ]
|
|
# }
|
|
# ]
|
|
# }
|
|
#
|
|
# ]
|
|
# }
|
|
|