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.

66 lines
2.2 KiB

import unittest
from argparse import ArgumentParser
from itertools import *
from gooey.tests.harness import instrumentGooey
from gooey.tests import *
class TestGooeyHeader(unittest.TestCase):
def make_parser(self):
parser = ArgumentParser(description='description')
return parser
def test_header_visibility(self):
"""
Test that the title and subtitle components correctly show/hide
based on config settings.
Verifying Issue #497
"""
for testdata in self.testcases():
with self.subTest(testdata):
with instrumentGooey(self.make_parser(), **testdata) as (app, frame, gapp):
frame: wx.Frame = frame
self.assertEqual(
frame.FindWindowByName("header_title").IsShown(),
testdata.get('header_show_title', True)
)
self.assertEqual(
frame.FindWindowByName("header_subtitle").IsShown(),
testdata.get('header_show_subtitle', True)
)
def test_header_string(self):
"""
Verify that string in the buildspec get correctly
placed into the UI.
"""
parser = ArgumentParser(description='Foobar')
with instrumentGooey(parser, program_name='BaZzEr') as (app, frame, gapp):
self.assertEqual(frame.FindWindowByName("header_title").GetLabel(), 'BaZzEr')
self.assertEqual(frame.FindWindowByName("header_subtitle").GetLabel(), 'Foobar')
def testcases(self):
"""
Generate a powerset of all possible combinations of
the header parameters (empty, some present, all present, all combos)
"""
iterable = product(['header_show_title', 'header_show_subtitle'], [True, False])
allCombinations = list(powerset(iterable))
return [{k: v for k,v in args}
for args in allCombinations]
def powerset(iterable):
"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
s = list(iterable)
return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
if __name__ == '__main__':
unittest.main()