24 #define MATCHED_STRING "server-north"    26 static const regmatch_t submatches[] = {
    27     { .rm_so = 0, .rm_eo = 12 }, 
    28     { .rm_so = 7, .rm_eo = 12 }, 
    36     .rsc_id_submatches = submatches,
    70 teardown(
void **state)
    73     g_hash_table_destroy(rule_input.
rsc_meta);
    86 assert_attr_expression(
const char *xml_string, 
int reference_rc)
   100 #define EXPR_SOURCE_LITERAL_PASSES                      \   101         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   102         PCMK_XA_ATTRIBUTE "='foo' "                     \   103         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   104         PCMK_XA_VALUE "='bar' "                         \   105         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />"   108 null_invalid(
void **state)
   124 #define EXPR_ID_MISSING                                 \   125         "<" PCMK_XE_EXPRESSION " "                      \   126         PCMK_XA_ATTRIBUTE "='foo' "                     \   127         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   128         PCMK_XA_VALUE "='bar' />"   131 id_missing(
void **state)
   142 #define EXPR_ATTR_MISSING                               \   143         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   144         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   145         PCMK_XA_VALUE "='bar' />"   148 attr_missing(
void **state)
   153 #define EXPR_ATTR_SUBMATCH_PASSES                       \   154         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   155         PCMK_XA_ATTRIBUTE "='prefer-%1' "               \   156         PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />"   159 attr_with_submatch_passes(
void **state)
   164 #define EXPR_ATTR_SUBMATCH_FAILS                        \   165         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   166         PCMK_XA_ATTRIBUTE "='undefined-%1' "            \   167         PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />"   170 attr_with_submatch_fails(
void **state)
   180 #define EXPR_SOURCE_MISSING                             \   181         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   182         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   183         PCMK_XA_ATTRIBUTE "='foo' "                     \   184         PCMK_XA_VALUE "='bar' />"   187 source_missing(
void **state)
   193 #define EXPR_SOURCE_INVALID                             \   194         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   195         PCMK_XA_ATTRIBUTE "='foo' "                     \   196         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   197         PCMK_XA_VALUE "='bar' "                         \   198         PCMK_XA_VALUE_SOURCE "='not-a-source' />"   201 source_invalid(
void **state)
   208 source_literal_passes(
void **state)
   213 #define EXPR_SOURCE_LITERAL_VALUE_FAILS                 \   214         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   215         PCMK_XA_ATTRIBUTE "='foo' "                     \   216         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   217         PCMK_XA_VALUE "='wrong-value' "                 \   218         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />"   221 source_literal_value_fails(
void **state)
   227 #define EXPR_SOURCE_LITERAL_ATTR_FAILS                  \   228         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   229         PCMK_XA_ATTRIBUTE "='not-an-attribute' "        \   230         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   231         PCMK_XA_VALUE "='bar' "                         \   232         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />"   235 source_literal_attr_fails(
void **state)
   241 #define EXPR_SOURCE_PARAM_MISSING                       \   242         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   243         PCMK_XA_ATTRIBUTE "='foo' "                     \   244         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   245         PCMK_XA_VALUE "='not-a-param' "                 \   246         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_PARAM "' />"   249 source_params_missing(
void **state)
   254 #define EXPR_SOURCE_PARAM_PASSES                        \   255         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   256         PCMK_XA_ATTRIBUTE "='foo' "                     \   257         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   258         PCMK_XA_VALUE "='foo-param' "                   \   259         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_PARAM "' />"   262 source_params_passes(
void **state)
   267 #define EXPR_SOURCE_PARAM_FAILS                         \   268         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   269         PCMK_XA_ATTRIBUTE "='foo' "                     \   270         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   271         PCMK_XA_VALUE "='myparam' "                     \   272         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_PARAM "' />"   275 source_params_fails(
void **state)
   280 #define EXPR_SOURCE_META_MISSING                        \   281         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   282         PCMK_XA_ATTRIBUTE "='foo' "                     \   283         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   284         PCMK_XA_VALUE "='not-a-meta' "                  \   285         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_META "' />"   288 source_meta_missing(
void **state)
   293 #define EXPR_SOURCE_META_PASSES                         \   294         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   295         PCMK_XA_ATTRIBUTE "='foo' "                     \   296         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   297         PCMK_XA_VALUE "='foo-meta' "                    \   298         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_META "' />"   301 source_meta_passes(
void **state)
   306 #define EXPR_SOURCE_META_FAILS                        \   307         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   308         PCMK_XA_ATTRIBUTE "='foo' "                     \   309         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   310         PCMK_XA_VALUE "='mymeta' "                      \   311         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_META "' />"   314 source_meta_fails(
void **state)
   324 #define EXPR_TYPE_DEFAULT_NUMBER                        \   325         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   326         PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' "       \   327         PCMK_XA_ATTRIBUTE "='num' "                     \   328         PCMK_XA_VALUE "='2.5' />"   331 type_default_number(
void **state)
   337 #define EXPR_TYPE_DEFAULT_INT                           \   338         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   339         PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' "       \   340         PCMK_XA_ATTRIBUTE "='num' "                     \   341         PCMK_XA_VALUE "='2' />"   344 type_default_int(
void **state)
   350 #define EXPR_TYPE_STRING_PASSES                         \   351         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   352         PCMK_XA_TYPE "='" PCMK_VALUE_STRING "' "        \   353         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   354         PCMK_XA_ATTRIBUTE "='foo' "                     \   355         PCMK_XA_VALUE "='bar' />"   358 type_string_passes(
void **state)
   363 #define EXPR_TYPE_STRING_FAILS                          \   364         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   365         PCMK_XA_TYPE "='" PCMK_VALUE_STRING "' "        \   366         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   367         PCMK_XA_ATTRIBUTE "='foo' "                     \   368         PCMK_XA_VALUE "='bat' />"   371 type_string_fails(
void **state)
   376 #define EXPR_TYPE_INTEGER_PASSES                        \   377         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   378         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   379         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   380         PCMK_XA_ATTRIBUTE "='num' "                     \   381         PCMK_XA_VALUE "='10' />"   384 type_integer_passes(
void **state)
   389 #define EXPR_TYPE_INTEGER_FAILS                         \   390         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   391         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   392         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   393         PCMK_XA_ATTRIBUTE "='num' "                     \   394         PCMK_XA_VALUE "='11' />"   397 type_integer_fails(
void **state)
   402 #define EXPR_TYPE_INTEGER_TRUNCATION                    \   403         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   404         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   405         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   406         PCMK_XA_ATTRIBUTE "='num' "                     \   407         PCMK_XA_VALUE "='10.5' />"   410 type_integer_truncation(
void **state)
   415 #define EXPR_TYPE_NUMBER_PASSES                         \   416         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   417         PCMK_XA_TYPE "='" PCMK_VALUE_NUMBER "' "        \   418         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   419         PCMK_XA_ATTRIBUTE "='num' "                     \   420         PCMK_XA_VALUE "='10.0' />"   423 type_number_passes(
void **state)
   428 #define EXPR_TYPE_NUMBER_FAILS                          \   429         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   430         PCMK_XA_TYPE "='" PCMK_VALUE_NUMBER "' "        \   431         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   432         PCMK_XA_ATTRIBUTE "='num' "                     \   433         PCMK_XA_VALUE "='10.1' />"   436 type_number_fails(
void **state)
   441 #define EXPR_TYPE_VERSION_PASSES                        \   442         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   443         PCMK_XA_TYPE "='" PCMK_VALUE_VERSION "' "       \   444         PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' "       \   445         PCMK_XA_ATTRIBUTE "='ver' "                     \   446         PCMK_XA_VALUE "='3.4.9' />"   449 type_version_passes(
void **state)
   454 #define EXPR_TYPE_VERSION_EQUALITY                      \   455         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   456         PCMK_XA_TYPE "='" PCMK_VALUE_VERSION "' "       \   457         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   458         PCMK_XA_ATTRIBUTE "='ver' "                     \   459         PCMK_XA_VALUE "='3.5' />"   462 type_version_equality(
void **state)
   467 #define EXPR_TYPE_VERSION_FAILS                         \   468         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   469         PCMK_XA_TYPE "='" PCMK_VALUE_VERSION "' "       \   470         PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' "      \   471         PCMK_XA_ATTRIBUTE "='ver' "                     \   472         PCMK_XA_VALUE "='4.0' />"   475 type_version_fails(
void **state)
   484 #define EXPR_OP_MISSING                                 \   485         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   486         PCMK_XA_ATTRIBUTE "='foo' "                     \   487         PCMK_XA_VALUE "='bar' />"   490 op_missing(
void **state)
   495 #define EXPR_OP_INVALID                                 \   496         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   497         PCMK_XA_ATTRIBUTE "='foo' "                     \   498         PCMK_XA_OPERATION "='not-an-operation' "        \   499         PCMK_XA_VALUE "='bar' />"   502 op_invalid(
void **state)
   507 #define EXPR_OP_LT_PASSES                               \   508         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   509         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   510         PCMK_XA_OPERATION "='" PCMK_VALUE_LT "' "       \   511         PCMK_XA_ATTRIBUTE "='num' "                     \   512         PCMK_XA_VALUE "='20' />"   515 op_lt_passes(
void **state)
   520 #define EXPR_OP_LT_FAILS                                \   521         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   522         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   523         PCMK_XA_OPERATION "='" PCMK_VALUE_LT "' "       \   524         PCMK_XA_ATTRIBUTE "='num' "                     \   525         PCMK_XA_VALUE "='2' />"   528 op_lt_fails(
void **state)
   533 #define EXPR_OP_GT_PASSES                               \   534         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   535         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   536         PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' "       \   537         PCMK_XA_ATTRIBUTE "='num' "                     \   538         PCMK_XA_VALUE "='2' />"   541 op_gt_passes(
void **state)
   546 #define EXPR_OP_GT_FAILS                                \   547         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   548         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   549         PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' "       \   550         PCMK_XA_ATTRIBUTE "='num' "                     \   551         PCMK_XA_VALUE "='20' />"   554 op_gt_fails(
void **state)
   559 #define EXPR_OP_LTE_LT_PASSES                           \   560         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   561         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   562         PCMK_XA_OPERATION "='" PCMK_VALUE_LTE "' "      \   563         PCMK_XA_ATTRIBUTE "='num' "                     \   564         PCMK_XA_VALUE "='20' />"   567 op_lte_lt_passes(
void **state)
   572 #define EXPR_OP_LTE_EQ_PASSES                           \   573         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   574         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   575         PCMK_XA_OPERATION "='" PCMK_VALUE_LTE "' "      \   576         PCMK_XA_ATTRIBUTE "='num' "                     \   577         PCMK_XA_VALUE "='10' />"   580 op_lte_eq_passes(
void **state)
   585 #define EXPR_OP_LTE_FAILS                               \   586         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   587         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   588         PCMK_XA_OPERATION "='" PCMK_VALUE_LTE "' "      \   589         PCMK_XA_ATTRIBUTE "='num' "                     \   590         PCMK_XA_VALUE "='9' />"   593 op_lte_fails(
void **state)
   598 #define EXPR_OP_GTE_GT_PASSES                           \   599         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   600         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   601         PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' "      \   602         PCMK_XA_ATTRIBUTE "='num' "                     \   603         PCMK_XA_VALUE "='1' />"   606 op_gte_gt_passes(
void **state)
   611 #define EXPR_OP_GTE_EQ_PASSES                           \   612         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   613         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   614         PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' "      \   615         PCMK_XA_ATTRIBUTE "='num' "                     \   616         PCMK_XA_VALUE "='10' />"   619 op_gte_eq_passes(
void **state)
   624 #define EXPR_OP_GTE_FAILS                               \   625         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   626         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   627         PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' "      \   628         PCMK_XA_ATTRIBUTE "='num' "                     \   629         PCMK_XA_VALUE "='11' />"   632 op_gte_fails(
void **state)
   638 #define EXPR_OP_EQ_PASSES                               \   639         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   640         PCMK_XA_TYPE "='" PCMK_VALUE_NUMBER "' "        \   641         PCMK_XA_ATTRIBUTE "='foo' "                     \   642         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   643         PCMK_XA_VALUE "='bar' "                         \   644         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />"   647 op_eq_passes(
void **state)
   652 #define EXPR_OP_EQ_FAILS                                \   653         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   654         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   655         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' "       \   656         PCMK_XA_ATTRIBUTE "='num' "                     \   657         PCMK_XA_VALUE "='bar' />"   660 op_eq_fails(
void **state)
   665 #define EXPR_OP_NE_PASSES                               \   666         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   667         PCMK_XA_TYPE "='" PCMK_VALUE_STRING "' "        \   668         PCMK_XA_ATTRIBUTE "='foo' "                     \   669         PCMK_XA_OPERATION "='" PCMK_VALUE_NE "' "       \   670         PCMK_XA_VALUE "='bat' "                         \   671         PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />"   674 op_ne_passes(
void **state)
   679 #define EXPR_OP_NE_FAILS                                \   680         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   681         PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' "       \   682         PCMK_XA_OPERATION "='" PCMK_VALUE_NE "' "       \   683         PCMK_XA_ATTRIBUTE "='num' "                     \   684         PCMK_XA_VALUE "='10' />"   687 op_ne_fails(
void **state)
   692 #define EXPR_OP_DEFINED_PASSES                          \   693         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   694         PCMK_XA_ATTRIBUTE "='foo' "                     \   695         PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />"   698 op_defined_passes(
void **state)
   703 #define EXPR_OP_DEFINED_FAILS                           \   704         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   705         PCMK_XA_ATTRIBUTE "='boo' "                     \   706         PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />"   709 op_defined_fails(
void **state)
   714 #define EXPR_OP_DEFINED_WITH_VALUE                      \   715         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   716         PCMK_XA_ATTRIBUTE "='foo' "                     \   717         PCMK_XA_VALUE "='bar' "                         \   718         PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />"   721 op_defined_with_value(
void **state)
   727 #define EXPR_OP_UNDEFINED_PASSES                        \   728         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   729         PCMK_XA_ATTRIBUTE "='boo' "                     \   730         PCMK_XA_OPERATION "='" PCMK_VALUE_NOT_DEFINED "' />"   733 op_undefined_passes(
void **state)
   738 #define EXPR_OP_UNDEFINED_FAILS                         \   739         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   740         PCMK_XA_ATTRIBUTE "='foo' "                     \   741         PCMK_XA_OPERATION "='" PCMK_VALUE_NOT_DEFINED "' />"   744 op_undefined_fails(
void **state)
   754 #define EXPR_VALUE_MISSING_DEFINED_OK                   \   755         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   756         PCMK_XA_ATTRIBUTE "='num' "                     \   757         PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />"   760 value_missing_defined_ok(
void **state)
   765 #define EXPR_VALUE_MISSING_EQ_OK                        \   766         "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' "   \   767         PCMK_XA_ATTRIBUTE "='not-an-attr' "             \   768         PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' />"   771 value_missing_eq_ok(
void **state)
   778 #define expr_test(f) cmocka_unit_test_setup_teardown(f, setup, teardown)   781                 cmocka_unit_test(null_invalid),
 
#define EXPR_VALUE_MISSING_DEFINED_OK
#define EXPR_TYPE_VERSION_FAILS
#define EXPR_OP_DEFINED_FAILS
#define EXPR_SOURCE_META_PASSES
#define EXPR_TYPE_INTEGER_TRUNCATION
#define EXPR_SOURCE_MISSING
#define EXPR_OP_UNDEFINED_PASSES
#define EXPR_OP_LT_PASSES
G_GNUC_INTERNAL int pcmk__evaluate_attr_expression(const xmlNode *expression, const pcmk_rule_input_t *rule_input)
#define EXPR_SOURCE_PARAM_FAILS
#define EXPR_ATTR_MISSING
#define EXPR_TYPE_DEFAULT_NUMBER
#define EXPR_OP_LTE_FAILS
#define EXPR_TYPE_VERSION_PASSES
#define EXPR_TYPE_DEFAULT_INT
#define EXPR_TYPE_NUMBER_FAILS
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
#define EXPR_SOURCE_INVALID
#define EXPR_OP_DEFINED_WITH_VALUE
#define EXPR_SOURCE_PARAM_MISSING
#define EXPR_VALUE_MISSING_EQ_OK
#define EXPR_TYPE_STRING_PASSES
#define EXPR_SOURCE_LITERAL_VALUE_FAILS
#define EXPR_OP_EQ_PASSES
#define EXPR_OP_DEFINED_PASSES
int pcmk__xml_test_setup_group(void **state)
Wrappers for and extensions to libxml2. 
void free_xml(xmlNode *child)
#define EXPR_SOURCE_LITERAL_ATTR_FAILS
#define EXPR_ATTR_SUBMATCH_PASSES
#define EXPR_SOURCE_LITERAL_PASSES
int pcmk__xml_test_teardown_group(void **state)
xmlNode * pcmk__xml_parse(const char *input)
#define EXPR_OP_GT_PASSES
#define EXPR_OP_GTE_EQ_PASSES
#define EXPR_TYPE_INTEGER_FAILS
GHashTable * pcmk__strkey_table(GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func)
#define EXPR_OP_NE_PASSES
#define EXPR_TYPE_STRING_FAILS
#define EXPR_TYPE_NUMBER_PASSES
#define EXPR_OP_LTE_EQ_PASSES
#define EXPR_TYPE_INTEGER_PASSES
#define EXPR_SOURCE_META_MISSING
#define EXPR_TYPE_VERSION_EQUALITY
#define EXPR_OP_GTE_FAILS
#define EXPR_ATTR_SUBMATCH_FAILS
#define EXPR_OP_LTE_LT_PASSES
#define EXPR_OP_GTE_GT_PASSES
void pcmk__insert_dup(GHashTable *table, const char *name, const char *value)
#define EXPR_SOURCE_PARAM_PASSES
#define EXPR_SOURCE_META_FAILS