19 run_one_test(
const char *t, 
const char *x, 
int expected) {
    30 no_time_given(
void **state) {
    35 any_time_satisfies_empty_spec(
void **state) {
    44 time_satisfies_year_spec(
void **state) {
    45     run_one_test(
"2020-01-01", 
"<date_spec id='spec' years='2020'/>", 
pcmk_rc_ok);
    49 time_after_year_spec(
void **state) {
    54 time_satisfies_year_range(
void **state) {
    55     run_one_test(
"2020-01-01", 
"<date_spec id='spec' years='2010-2030'/>", 
pcmk_rc_ok);
    59 time_before_year_range(
void **state) {
    64 time_after_year_range(
void **state) {
    65     run_one_test(
"2020-01-01", 
"<date_spec id='spec' years='2010-2015'/>", 
pcmk_rc_after_range);
    69 range_without_start_year_passes(
void **state) {
    70     run_one_test(
"2010-01-01", 
"<date_spec id='spec' years='-2020'/>", 
pcmk_rc_ok);
    74 range_without_end_year_passes(
void **state) {
    75     run_one_test(
"2010-01-01", 
"<date_spec id='spec' years='2000-'/>", 
pcmk_rc_ok);
    76     run_one_test(
"2000-10-01", 
"<date_spec id='spec' years='2000-'/>", 
pcmk_rc_ok);
    80 yeardays_satisfies(
void **state) {
    81     run_one_test(
"2020-01-30", 
"<date_spec id='spec' yeardays='30'/>", 
pcmk_rc_ok);
    85 time_after_yeardays_spec(
void **state) {
    90 yeardays_feb_29_satisfies(
void **state) {
    91     run_one_test(
"2016-02-29", 
"<date_spec id='spec' yeardays='60'/>", 
pcmk_rc_ok);
    95 exact_ymd_satisfies(
void **state) {
    96     run_one_test(
"2001-12-31", 
"<date_spec id='spec' years='2001' months='12' monthdays='31'/>", 
pcmk_rc_ok);
   100 range_in_month_satisfies(
void **state) {
   101     run_one_test(
"2001-06-10", 
"<date_spec id='spec' years='2001' months='6' monthdays='1-10'/>", 
pcmk_rc_ok);
   105 exact_ymd_after_range(
void **state) {
   106     run_one_test(
"2001-12-31", 
"<date_spec id='spec' years='2001' months='12' monthdays='30'/>", 
pcmk_rc_after_range);
   110 time_after_monthdays_range(
void **state) {
   111     run_one_test(
"2001-06-10", 
"<date_spec id='spec' years='2001' months='6' monthdays='11-15'/>", 
pcmk_rc_before_range);
   115                 cmocka_unit_test(no_time_given),
   116                 cmocka_unit_test(any_time_satisfies_empty_spec),
   117                 cmocka_unit_test(time_satisfies_year_spec),
   118                 cmocka_unit_test(time_after_year_spec),
   119                 cmocka_unit_test(time_satisfies_year_range),
   120                 cmocka_unit_test(time_before_year_range),
   121                 cmocka_unit_test(time_after_year_range),
   122                 cmocka_unit_test(range_without_start_year_passes),
   123                 cmocka_unit_test(range_without_end_year_passes),
   124                 cmocka_unit_test(yeardays_satisfies),
   125                 cmocka_unit_test(time_after_yeardays_spec),
   126                 cmocka_unit_test(yeardays_feb_29_satisfies),
   127                 cmocka_unit_test(exact_ymd_satisfies),
   128                 cmocka_unit_test(range_in_month_satisfies),
   129                 cmocka_unit_test(exact_ymd_after_range),
   130                 cmocka_unit_test(time_after_monthdays_range))
 int pe_cron_range_satisfied(crm_time_t *now, xmlNode *cron_spec)
 
struct crm_time_s crm_time_t
 
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
 
xmlNode * string2xml(const char *input)
 
Wrappers for and extensions to libxml2. 
 
void free_xml(xmlNode *child)
 
crm_time_t * crm_time_new(const char *string)
 
void crm_time_free(crm_time_t *dt)