Writing Test Cases¶
libMariaS3 uses DDM4’s YATL library to create unit tests, this provides macros to test if the outcomes are as expected.
Adding a Test Case¶
Test cases are basic C applications in the tests/ directory. To add a test case to the suite. To add a test edit the include.am and add the following (replacing mytest with whatever the test is called):
t_mytest_SOURCES= tests/mytest.c
t_mytest_LDADD= src/libmarias3.la
check_PROGRAMS+= t/mytest
noinst_PROGRAMS+= t/mytest
Using YATL¶
YATL is needed to make sure conditions within the test program are met. To include it in your test application, add the following:
#include <yatl/lite.h>
A test skip can be added if certain conditions aren’t met:
SKIP_IF_(!is_connected, "Cannot connected to a database server")
There are many types of assert provided as can be seen in the next section, they can be used as follows:
ASSERT_EQ_(3, column, "Column count unexpected)
ASSERT_FALSE_(false_condition, "False condition is not false")
ASSERT_STREQ_("test", some_data, "Unexpected data")
YATL Library¶
Parameter Definitions¶
-
type __expression¶
An expression typically used in an
ifstatement.
-
type __expected¶
An expected variable or expression
-
type __actual¶
The actual variable or expression
-
type __expected_str¶
The expected string
-
type __actual_str¶
The actual string to compare with
-
type __length¶
The length of a string for comparison
Function Definitions¶
-
SKIP_IF(__expression)¶
Skips the test if the expression is true
-
SKIP_IF_(__expression, ...)¶
Skips the test if the expression is true and uses a printf style format message
-
ASSERT_TRUE(__expression)¶
Make sure the expression is true, test will fail if it is false
-
ASSERT_FALSE(__expression)¶
Make sure the expression is false, test will fail if it is true
-
ASSERT_FALSE_(__expression, ...)¶
Make sure the expression is false and use a printf style format message to fail if it is true.
-
ASSERT_NULL_(__expression, ...)¶
Make sure the expression is
NULLand use a printf style format message to fail if it isn’t.
-
ASSERT_NOT_NULL_(__expression, ...)¶
Make sure the expression is not
NULLand use a printf style format message to fail if it is.
-
ASSERT_TRUE_(__expression, ...)¶
Make sure the expression is
trueand use a printf style format message to fail if it is not.
-
ASSERT_EQ(__expected, __actual)¶
Make sure that one condition or variable matches another one.
Note
Not suitable for string matching
-
ASSERT_EQ_(__expected, __actual, ...)¶
Make sure that one condition or variable matches another one and use a printf style format message to fail if the do not match.
Note
Not suitable for string matching
-
ASSERT_NEQ(__expected, __actual)¶
Make sure that one condition or variable does not match another one.
Note
Not suitable for string matching
-
ASSERT_NEQ_(__expected, __actual, ...)¶
Make sure that one condition or variable does not match another one and use a printf style format message to fail if they do match.
Note
Not suitable for string matching
-
ASSERT_STREQ(__expected_str, __actual_str)¶
Compare one
NULterminated string with another one and fail if they do not match.
-
ASSERT_STREQ_(__expected_str, __actual_str, ...)¶
Compare one
NULterminated string with another one and use a printf style format message to fail if they do not match.
-
ASSERT_STREQL_(__expected_str, __actual_str, __length, ...)¶
Compare a string of
__lengthto another one and use a printf style format message to fail if they do not match.Note
This is designed for use with non-NUL-terminated strings.
-
ASSERT_STRNE(__expected_str, __actual_str)¶
Compare one
NULterminated string with another one and fail if they match.
-
ASSERT_STRNE_(__expected_str, __actual_str, ...)¶
Compare one
NULterminated string with another one and use a printf style format message to fail if they match.