On Wed, Jan 26, 2022 at 5:00 AM Daniel Latypov dlatypov@google.com wrote:
We currently have 2 other versions of KUNIT_INIT_BINARY_ASSERT_STRUCT. The only differences are that
- the format funcition they pass is different
Minor nit: s/funcition/function/
- the types of left_val/right_val should be different (integral,
pointer, string).
The latter doesn't actually matter since these macros are just plumbing them along to KUNIT_ASSERTION where they will get type checked.
So combine them all into a single KUNIT_INIT_BINARY_ASSERT_STRUCT that now also takes the format function as a parameter.
Signed-off-by: Daniel Latypov dlatypov@google.com
Makes sense to me.
One minor spelling nit: probably not worth a whole new version over, but if v2 ever happens, worth fixing at the same time...
-- David
include/kunit/assert.h | 68 +++++++----------------------------------- include/kunit/test.h | 20 +++++++------ 2 files changed, 22 insertions(+), 66 deletions(-)
diff --git a/include/kunit/assert.h b/include/kunit/assert.h index 0b3704db54b6..649bfac9f406 100644 --- a/include/kunit/assert.h +++ b/include/kunit/assert.h @@ -178,23 +178,28 @@ void kunit_binary_assert_format(const struct kunit_assert *assert, struct string_stream *stream);
/**
- KUNIT_INIT_BINARY_ASSERT_STRUCT() - Initializes a
&struct kunit_binary_assert.
- KUNIT_INIT_BINARY_ASSERT_STRUCT() - Initializes a binary assert like
kunit_binary_assert, kunit_binary_ptr_assert, etc.
- @format_func: a function which formats the assert to a string.
- @op_str: A string representation of the comparison operator (e.g. "==").
- @left_str: A string representation of the expression in the left slot.
- @left_val: The actual evaluated value of the expression in the left slot.
- @right_str: A string representation of the expression in the right slot.
- @right_val: The actual evaluated value of the expression in the right slot.
- Initializes a &struct kunit_binary_assert. Intended to be used in
- KUNIT_EXPECT_* and KUNIT_ASSERT_* macros.
- Initializes a binary assert like kunit_binary_assert,
- kunit_binary_ptr_assert, etc. This relies on these structs having the same
- fields but with different types for left_val/right_val.
*/
- This is ultimately used by binary assertion macros like KUNIT_EXPECT_EQ, etc.
-#define KUNIT_INIT_BINARY_ASSERT_STRUCT(op_str, \ +#define KUNIT_INIT_BINARY_ASSERT_STRUCT(format_func, \
op_str, \ left_str, \ left_val, \ right_str, \ right_val) { \
.assert = { .format = kunit_binary_assert_format }, \
.assert = { .format = format_func }, \ .operation = op_str, \ .left_text = left_str, \ .left_value = left_val, \
@@ -229,32 +234,6 @@ void kunit_binary_ptr_assert_format(const struct kunit_assert *assert, const struct va_format *message, struct string_stream *stream);
-/**
- KUNIT_INIT_BINARY_PTR_ASSERT_STRUCT() - Initializes a
&struct kunit_binary_ptr_assert.
- @type: The type (assertion or expectation) of this kunit_assert.
- @op_str: A string representation of the comparison operator (e.g. "==").
- @left_str: A string representation of the expression in the left slot.
- @left_val: The actual evaluated value of the expression in the left slot.
- @right_str: A string representation of the expression in the right slot.
- @right_val: The actual evaluated value of the expression in the right slot.
- Initializes a &struct kunit_binary_ptr_assert. Intended to be used in
- KUNIT_EXPECT_* and KUNIT_ASSERT_* macros.
- */
-#define KUNIT_INIT_BINARY_PTR_ASSERT_STRUCT(op_str, \
left_str, \
left_val, \
right_str, \
right_val) { \
.assert = { .format = kunit_binary_ptr_assert_format }, \
.operation = op_str, \
.left_text = left_str, \
.left_value = left_val, \
.right_text = right_str, \
.right_value = right_val \
-}
/**
- struct kunit_binary_str_assert - An expectation/assertion that compares two
string values (for example, KUNIT_EXPECT_STREQ(test, foo, "bar")).
@@ -282,29 +261,4 @@ void kunit_binary_str_assert_format(const struct kunit_assert *assert, const struct va_format *message, struct string_stream *stream);
-/**
- KUNIT_INIT_BINARY_STR_ASSERT_STRUCT() - Initializes a
&struct kunit_binary_str_assert.
- @op_str: A string representation of the comparison operator (e.g. "==").
- @left_str: A string representation of the expression in the left slot.
- @left_val: The actual evaluated value of the expression in the left slot.
- @right_str: A string representation of the expression in the right slot.
- @right_val: The actual evaluated value of the expression in the right slot.
- Initializes a &struct kunit_binary_str_assert. Intended to be used in
- KUNIT_EXPECT_* and KUNIT_ASSERT_* macros.
- */
-#define KUNIT_INIT_BINARY_STR_ASSERT_STRUCT(op_str, \
left_str, \
left_val, \
right_str, \
right_val) { \
.assert = { .format = kunit_binary_str_assert_format }, \
.operation = op_str, \
.left_text = left_str, \
.left_value = left_val, \
.right_text = right_str, \
.right_value = right_val \
-}
#endif /* _KUNIT_ASSERT_H */ diff --git a/include/kunit/test.h b/include/kunit/test.h index bf82c313223b..a93dfb8ff393 100644 --- a/include/kunit/test.h +++ b/include/kunit/test.h @@ -864,7 +864,7 @@ void kunit_do_failed_assertion(struct kunit *test, */ #define KUNIT_BASE_BINARY_ASSERTION(test, \ assert_class, \
ASSERT_CLASS_INIT, \
format_func, \ assert_type, \ left, \ op, \
@@ -879,11 +879,12 @@ do { \ assert_type, \ __left op __right, \ assert_class, \
ASSERT_CLASS_INIT(#op, \
#left, \
__left, \
#right, \
__right), \
KUNIT_INIT_BINARY_ASSERT_STRUCT(format_func, \
#op, \
#left, \
__left, \
#right, \
__right), \ fmt, \ ##__VA_ARGS__); \
} while (0) @@ -897,7 +898,7 @@ do { \ ...) \ KUNIT_BASE_BINARY_ASSERTION(test, \ kunit_binary_assert, \
KUNIT_INIT_BINARY_ASSERT_STRUCT, \
kunit_binary_assert_format, \ assert_type, \ left, op, right, \ fmt, \
@@ -912,7 +913,7 @@ do { \ ...) \ KUNIT_BASE_BINARY_ASSERTION(test, \ kunit_binary_ptr_assert, \
KUNIT_INIT_BINARY_PTR_ASSERT_STRUCT, \
kunit_binary_ptr_assert_format, \ assert_type, \ left, op, right, \ fmt, \
@@ -933,7 +934,8 @@ do { \ assert_type, \ strcmp(__left, __right) op 0, \ kunit_binary_str_assert, \
KUNIT_INIT_BINARY_STR_ASSERT_STRUCT(#op, \
KUNIT_INIT_BINARY_ASSERT_STRUCT(kunit_binary_str_assert_format,\
#op, \ #left, \ __left, \ #right, \
-- 2.35.0.rc2.247.g8bbb082509-goog