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.
71 lines
2.4 KiB
71 lines
2.4 KiB
import time
|
|
import unittest
|
|
from argparse import ArgumentParser
|
|
from itertools import *
|
|
from gooey.gui import state as s
|
|
from gooey.tests.harness import instrumentGooey
|
|
|
|
|
|
from gooey.tests import *
|
|
from gooey.util.functional import identity
|
|
|
|
|
|
class TestFooterTimeRemaining(unittest.TestCase):
|
|
|
|
def make_parser(self):
|
|
parser = ArgumentParser(description='description')
|
|
return parser
|
|
|
|
def test_time_remaining_visibility(self):
|
|
for testdata in self.testcases():
|
|
with self.subTest(testdata):
|
|
with instrumentGooey(self.make_parser(), timing_options=testdata) as (app, frame, gapp):
|
|
|
|
gapp.set_state(s.consoleScreen(identity, gapp.state))
|
|
app: wx.App = app
|
|
wx.CallLater(1, app.ExitMainLoop)
|
|
app.MainLoop()
|
|
|
|
self.assertEqual(
|
|
frame.FindWindowByName('timing').Shown,
|
|
testdata.get('show_time_remaining',False)
|
|
)
|
|
|
|
def test_time_remaining_visibility_on_complete(self):
|
|
for testdata in self.testcases():
|
|
with self.subTest(testdata):
|
|
with instrumentGooey(self.make_parser(), timing_options=testdata) as (app, frame, gapp):
|
|
|
|
gapp.set_state(s.successScreen(identity, gapp.state))
|
|
app: wx.App = app
|
|
wx.CallLater(1, app.ExitMainLoop)
|
|
app.MainLoop()
|
|
|
|
|
|
if not testdata.get('show_time_remaining') and testdata:
|
|
self.assertEqual(
|
|
frame.FindWindowByName('timing').Shown,
|
|
testdata.get('hide_time_remaining_on_complete',True)
|
|
)
|
|
else:
|
|
return True
|
|
|
|
def testcases(self):
|
|
"""
|
|
Generate a powerset of all possible combinations of
|
|
the header parameters (empty, some present, all present, all combos)
|
|
"""
|
|
iterable = product(['show_time_remaining', 'hide_time_remaining_on_complete'], [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()
|