It would be easy to extend this code sample to add in support for start/end seconds as well.# Tests the start_hour, start_minute, end_hour, and end_minute # pulldowns to verify that a consistent set of them have been # specified, and that the start time (if specified) is before # the end time. sub validate_date_pulldowns { if (defined(param('end_hour'))) { return 0 unless defined(param('start_hour')); return 0 if param('start_hour') > param('end_hour'); } if (defined(param('start_minute'))) { return 0 unless defined(param('start_hour')); } if (defined(param('end_minute'))) { return 0 unless defined(param('start_minute')); return 0 unless defined(param('end_hour')); return 0 if param('start_hour') == param('end_hour') and param('start_minute') > param('end_minute'); } return 1; }
Update: Note that the key idea is my strategy of turning many combinations of conditions into a set of "guard conditions" on which you exit early. I've found that this strategy often converts deep nested decision trees into a series of fairly straightforward decisions (as above).
In reply to Re: Testing for 16 possible combinations with 4 pull-down menus
by tilly
in thread Testing for 16 possible combinations with 4 pull-down menus
by softcotton
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |