-
-int ec_test_check_tk_parse(const struct ec_tk *tk, const char *input,
- const char *expected);
-
-#define TEST_ERR() \
- ec_log(EC_LOG_ERR, "%s:%d: error: test failed\n", \
- __FILE__, __LINE__); \
-
-#define EC_TEST_CHECK_TK_PARSE(tk, input, expected) ({ \
- int ret = ec_test_check_tk_parse(tk, input, expected); \
- if (ret) \
- TEST_ERR(); \
- ret; \
-})
-
-int ec_test_check_tk_complete(const struct ec_tk *tk, const char *input,
- const char *expected);
-
-#define EC_TEST_CHECK_TK_COMPLETE(tk, input, expected) ({ \
- int ret = ec_test_check_tk_complete(tk, input, expected); \
- if (ret) \
- TEST_ERR(); \
- ret; \
+int ec_test_one(const char *name);
+
+/* expected == -1 means no match */
+int ec_test_check_parse(struct ec_node *node, int expected, ...);
+
+#define EC_TEST_ERR(fmt, ...) \
+ ec_log(EC_LOG_ERR, "%s:%d: error: " fmt "\n", \
+ __FILE__, __LINE__, ##__VA_ARGS__); \
+
+#define EC_TEST_ASSERT(cond, args...) \
+ do { \
+ if (!(cond)) \
+ EC_TEST_ERR("assertion failure: " #cond); \
+ } while (0)
+
+/* node, input, [expected1, expected2, ...] */
+#define EC_TEST_CHECK_PARSE(node, args...) ({ \
+ int ret_ = ec_test_check_parse(node, args, EC_NODE_ENDLIST); \
+ if (ret_) \
+ EC_TEST_ERR("parse test failed"); \
+ ret_; \