mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-04 18:26:19 +01:00
Move test docs inline
This commit is contained in:
parent
9d3b37ac3f
commit
793ff83527
2
docs/reference/glib/tmpl/.gitignore
vendored
2
docs/reference/glib/tmpl/.gitignore
vendored
@ -23,6 +23,7 @@ gvariant.sgml
|
|||||||
gwakeup.sgml
|
gwakeup.sgml
|
||||||
hash_tables.sgml
|
hash_tables.sgml
|
||||||
iochannels.sgml
|
iochannels.sgml
|
||||||
|
keyfile.sgml
|
||||||
linked_lists_double.sgml
|
linked_lists_double.sgml
|
||||||
linked_lists_single.sgml
|
linked_lists_single.sgml
|
||||||
main.sgml
|
main.sgml
|
||||||
@ -40,6 +41,7 @@ sequence.sgml
|
|||||||
shell.sgml
|
shell.sgml
|
||||||
spawn.sgml
|
spawn.sgml
|
||||||
string_chunks.sgml
|
string_chunks.sgml
|
||||||
|
testing.sgml
|
||||||
thread_pools.sgml
|
thread_pools.sgml
|
||||||
threads.sgml
|
threads.sgml
|
||||||
trees-binary.sgml
|
trees-binary.sgml
|
||||||
|
@ -1,691 +0,0 @@
|
|||||||
<!-- ##### SECTION Title ##### -->
|
|
||||||
Testing
|
|
||||||
|
|
||||||
<!-- ##### SECTION Short_Description ##### -->
|
|
||||||
a test framework
|
|
||||||
|
|
||||||
<!-- ##### SECTION Long_Description ##### -->
|
|
||||||
<para>
|
|
||||||
GLib provides a framework for writing and maintaining unit tests
|
|
||||||
in parallel to the code they are testing. The API is designed according
|
|
||||||
to established concepts found in the other test frameworks (JUnit, NUnit,
|
|
||||||
RUnit), which in turn is based on smalltalk unit testing concepts.
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>Test case</term>
|
|
||||||
<listitem><para>
|
|
||||||
Tests (test methods) are grouped together with their
|
|
||||||
fixture into test cases.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>Fixture</term>
|
|
||||||
<listitem><para>
|
|
||||||
A test fixture consists of fixture data and setup and teardown methods
|
|
||||||
to establish the environment for the test functions. We use fresh
|
|
||||||
fixtures, i.e. fixtures are newly set up and torn down around each test
|
|
||||||
invocation to avoid dependencies between tests.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>Test suite</term>
|
|
||||||
<listitem><para>
|
|
||||||
Test cases can be grouped into test suites, to allow subsets of the
|
|
||||||
available tests to be run. Test suites can be grouped into other test
|
|
||||||
suites as well.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
The API is designed to handle creation and registration of test suites and
|
|
||||||
test cases implicitly. A simple call like
|
|
||||||
<informalexample><programlisting>
|
|
||||||
g_test_add_func ("/misc/assertions", test_assertions);
|
|
||||||
</programlisting></informalexample>
|
|
||||||
creates a test suite called "misc" with a single test case named "assertions",
|
|
||||||
which consists of running the test_assertions function.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
In addition to the traditional g_assert(), the test framework provides
|
|
||||||
an extended set of assertions for string and numerical comparisons:
|
|
||||||
g_assert_cmpfloat(), g_assert_cmpint(), g_assert_cmpuint(), g_assert_cmphex(),
|
|
||||||
g_assert_cmpstr(). The advantage of these variants over plain g_assert()
|
|
||||||
is that the assertion messages can be more elaborate, and include the
|
|
||||||
values of the compared entities.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
GLib ships with two utilities called gtester and gtester-report to
|
|
||||||
facilitate running tests and producing nicely formatted test reports.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<!-- ##### SECTION See_Also ##### -->
|
|
||||||
<para>
|
|
||||||
<link linkend="gtester">gtester</link>,
|
|
||||||
<link linkend="gtester-report">gtester-report</link>
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<!-- ##### SECTION Stability_Level ##### -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### SECTION Image ##### -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_minimized_result ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@minimized_quantity:
|
|
||||||
@format:
|
|
||||||
@Varargs:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_maximized_result ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@maximized_quantity:
|
|
||||||
@format:
|
|
||||||
@Varargs:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_init ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@argc:
|
|
||||||
@argv:
|
|
||||||
@Varargs:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_quick ##### -->
|
|
||||||
<para>
|
|
||||||
Returns %TRUE if tests are run in quick mode.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_slow ##### -->
|
|
||||||
<para>
|
|
||||||
Returns %TRUE if tests are run in slow mode.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_thorough ##### -->
|
|
||||||
<para>
|
|
||||||
Returns %TRUE if tests are run in thorough mode.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_perf ##### -->
|
|
||||||
<para>
|
|
||||||
Returns %TRUE if tests are run in performance mode.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_verbose ##### -->
|
|
||||||
<para>
|
|
||||||
Returns %TRUE if tests are run in verbose mode.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_quiet ##### -->
|
|
||||||
<para>
|
|
||||||
Returns %TRUE if tests are run in quiet mode.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_run ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### USER_FUNCTION GTestFunc ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_add_func ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@testpath:
|
|
||||||
@test_func:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### USER_FUNCTION GTestDataFunc ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@user_data:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_add_data_func ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@testpath:
|
|
||||||
@test_data:
|
|
||||||
@test_func:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_add ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@testpath:
|
|
||||||
@Fixture:
|
|
||||||
@tdata:
|
|
||||||
@fsetup:
|
|
||||||
@ftest:
|
|
||||||
@fteardown:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_fail ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_message ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@format:
|
|
||||||
@Varargs:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_bug_base ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@uri_pattern:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_bug ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@bug_uri_snippet:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### USER_FUNCTION GTestLogFatalFunc ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@log_domain:
|
|
||||||
@log_level:
|
|
||||||
@message:
|
|
||||||
@user_data:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_log_set_fatal_handler ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@log_func:
|
|
||||||
@user_data:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_timer_start ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_timer_elapsed ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_timer_last ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_queue_free ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@gfree_pointer:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_queue_destroy ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@destroy_func:
|
|
||||||
@destroy_data:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_queue_unref ##### -->
|
|
||||||
<para>
|
|
||||||
Enqueue an object to be released with g_object_unref() during
|
|
||||||
the next teardown phase. This is equivalent to calling g_test_queue_destroy()
|
|
||||||
with a destroy callback of g_object_unref().
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@gobject: the object to unref
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### ENUM GTestTrapFlags ##### -->
|
|
||||||
<para>
|
|
||||||
Test traps are guards around forked tests. These flags
|
|
||||||
determine what traps to set.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@G_TEST_TRAP_SILENCE_STDOUT: Redirect stdout of the test child to
|
|
||||||
<filename>/dev/null</filename> so it cannot be observed on the
|
|
||||||
console during test runs. The actual output is still captured
|
|
||||||
though to allow later tests with g_test_trap_assert_stdout().
|
|
||||||
@G_TEST_TRAP_SILENCE_STDERR: Redirect stderr of the test child to
|
|
||||||
<filename>/dev/null</filename> so it cannot be observed on the
|
|
||||||
console during test runs. The actual output is still captured
|
|
||||||
though to allow later tests with g_test_trap_assert_stderr().
|
|
||||||
@G_TEST_TRAP_INHERIT_STDIN: If this flag is given, stdin of the forked
|
|
||||||
child process is shared with stdin of its parent process. It is
|
|
||||||
redirected to <filename>/dev/null</filename> otherwise.
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_trap_fork ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@usec_timeout:
|
|
||||||
@test_trap_flags:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_trap_has_passed ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_trap_reached_timeout ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_trap_assert_passed ##### -->
|
|
||||||
<para>
|
|
||||||
Assert that the last forked test passed. See g_test_trap_fork().
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_trap_assert_failed ##### -->
|
|
||||||
<para>
|
|
||||||
Assert that the last forked test failed. See g_test_trap_fork().
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_trap_assert_stdout ##### -->
|
|
||||||
<para>
|
|
||||||
Assert that the stdout output of the last forked test matches @soutpattern.
|
|
||||||
See g_test_trap_fork().
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@soutpattern: a glob-style <link linkend="glib-Glob-style-pattern-matching">pattern</link>
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_trap_assert_stdout_unmatched ##### -->
|
|
||||||
<para>
|
|
||||||
Assert that the stdout output of the last forked test does not match
|
|
||||||
@soutpattern. See g_test_trap_fork().
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@soutpattern: a glob-style <link linkend="glib-Glob-style-pattern-matching">pattern</link>
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_trap_assert_stderr ##### -->
|
|
||||||
<para>
|
|
||||||
Assert that the stderr output of the last forked test matches @serrpattern.
|
|
||||||
See g_test_trap_fork().
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@serrpattern: a glob-style <link linkend="glib-Glob-style-pattern-matching">pattern</link>
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_trap_assert_stderr_unmatched ##### -->
|
|
||||||
<para>
|
|
||||||
Assert that the stderr output of the last forked test does not match
|
|
||||||
@serrpattern. See g_test_trap_fork().
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@serrpattern: a glob-style <link linkend="glib-Glob-style-pattern-matching">pattern</link>
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_test_rand_bit ##### -->
|
|
||||||
<para>
|
|
||||||
Get a reproducible random bit (0 or 1),
|
|
||||||
see g_test_rand_int() for details on test case random numbers.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_rand_int ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_rand_int_range ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@begin:
|
|
||||||
@end:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_rand_double ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_rand_double_range ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@range_start:
|
|
||||||
@range_end:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_assert ##### -->
|
|
||||||
<para>
|
|
||||||
Debugging macro to terminate the application if the assertion fails.
|
|
||||||
If the assertion fails (i.e. the expression is not true), an error message
|
|
||||||
is logged and the application is terminated.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The macro can be turned off in final releases of code by defining
|
|
||||||
#G_DISABLE_ASSERT when compiling the application.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@expr: the expression to check.
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_assert_not_reached ##### -->
|
|
||||||
<para>
|
|
||||||
Debugging macro to terminate the application if it is ever reached.
|
|
||||||
If it is reached, an error message is logged and the application is terminated.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The macro can be turned off in final releases of code by defining
|
|
||||||
#G_DISABLE_ASSERT when compiling the application.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_assert_cmpstr ##### -->
|
|
||||||
<para>
|
|
||||||
Debugging macro to terminate the application with a warning message
|
|
||||||
if a string comparison fails.
|
|
||||||
The strings are compared using g_strcmp0().
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The effect of <literal>g_assert_cmpstr (s1, op, s2)</literal> is the same
|
|
||||||
as <literal>g_assert (g_strcmp0 (s1, s2) op 0)</literal>. The advantage of this macro
|
|
||||||
is that it can produce a message that includes the actual values of @s1
|
|
||||||
and @s2.
|
|
||||||
</para>
|
|
||||||
<informalexample><programlisting>
|
|
||||||
g_assert_cmpstr (mystring, ==, "fubar");
|
|
||||||
</programlisting></informalexample>
|
|
||||||
|
|
||||||
@s1: a string (may be %NULL)
|
|
||||||
@cmp: The comparison operator to use. One of ==, !=, <, >, <=, >=.
|
|
||||||
@s2: another string (may be %NULL)
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_assert_cmpint ##### -->
|
|
||||||
<para>
|
|
||||||
Debugging macro to terminate the application with a warning message
|
|
||||||
if an integer comparison fails.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The effect of <literal>g_assert_cmpint (n1, op, n2)</literal> is the same
|
|
||||||
as <literal>g_assert (n1 op n2)</literal>. The advantage of this macro
|
|
||||||
is that it can produce a message that includes the actual values of @n1
|
|
||||||
and @n2.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@n1: an integer
|
|
||||||
@cmp: The comparison operator to use. One of ==, !=, <, >, <=, >=.
|
|
||||||
@n2: another integer
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_assert_cmpuint ##### -->
|
|
||||||
<para>
|
|
||||||
Debugging macro to terminate the application with a warning message
|
|
||||||
if an unsigned integer comparison fails.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The effect of <literal>g_assert_cmpuint (n1, op, n2)</literal> is the same
|
|
||||||
as <literal>g_assert (n1 op n2)</literal>. The advantage of this macro
|
|
||||||
is that it can produce a message that includes the actual values of @n1
|
|
||||||
and @n2.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@n1: an unsigned integer
|
|
||||||
@cmp: The comparison operator to use. One of ==, !=, <, >, <=, >=.
|
|
||||||
@n2: another unsigned integer
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_assert_cmphex ##### -->
|
|
||||||
<para>
|
|
||||||
Debugging macro to terminate the application with a warning message
|
|
||||||
if an unsigned integer comparison fails. This is a variant of
|
|
||||||
g_assert_cmpuint() that displays the numbers in hexadecimal notation
|
|
||||||
in the message.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@n1: an unsigned integer
|
|
||||||
@cmp: The comparison operator to use. One of ==, !=, <, >, <=, >=.
|
|
||||||
@n2: another unsigned integer
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_assert_cmpfloat ##### -->
|
|
||||||
<para>
|
|
||||||
Debugging macro to terminate the application with a warning message
|
|
||||||
if a floating point number comparison fails.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The effect of <literal>g_assert_cmpfloat (n1, op, n2)</literal> is the same
|
|
||||||
as <literal>g_assert (n1 op n2)</literal>. The advantage of this function
|
|
||||||
is that it can produce a message that includes the actual values of @n1
|
|
||||||
and @n2.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@n1: an floating point number
|
|
||||||
@cmp: The comparison operator to use. One of ==, !=, <, >, <=, >=.
|
|
||||||
@n2: another floating point number
|
|
||||||
@Since: 2.16
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_assert_no_error ##### -->
|
|
||||||
<para>
|
|
||||||
Debugging macro to terminate the application with a warning message
|
|
||||||
if a method has returned a #GError.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The effect of <literal>g_assert_no_error (err)</literal> is the same
|
|
||||||
as <literal>g_assert (err == NULL)</literal>. The advantage of this macro
|
|
||||||
is that it can produce a message that includes the error message and code.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@err: a #GError, possibly %NULL
|
|
||||||
@Since: 2.20
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO g_assert_error ##### -->
|
|
||||||
<para>
|
|
||||||
Debugging macro to terminate the application with a warning message
|
|
||||||
if a method has not returned the correct #GError.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The effect of <literal>g_assert_error (err, dom, c)</literal> is the same
|
|
||||||
as <literal>g_assert (err != NULL && err->domain == dom && err->code == c)</literal>.
|
|
||||||
The advantage of this macro is that it can produce a message that
|
|
||||||
includes the incorrect error message and code.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
This can only be used to test for a specific error. If you want to
|
|
||||||
test that @err is set, but don't care what it's set to, just use
|
|
||||||
<literal>g_assert (err != NULL)</literal>
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@err: a #GError, possibly %NULL
|
|
||||||
@dom: the expected error domain (a #GQuark)
|
|
||||||
@c: the expected error code
|
|
||||||
@Since: 2.20
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### TYPEDEF GTestCase ##### -->
|
|
||||||
<para>
|
|
||||||
An opaque structure representing a test case.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### TYPEDEF GTestSuite ##### -->
|
|
||||||
<para>
|
|
||||||
An opaque structure representing a test suite.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### USER_FUNCTION GTestFixtureFunc ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@fixture:
|
|
||||||
@user_data:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_create_case ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@test_name:
|
|
||||||
@data_size:
|
|
||||||
@test_data:
|
|
||||||
@data_setup:
|
|
||||||
@data_test:
|
|
||||||
@data_teardown:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_create_suite ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@suite_name:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_get_root ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@void:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_suite_add ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@suite:
|
|
||||||
@test_case:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_suite_add_suite ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@suite:
|
|
||||||
@nestedsuite:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION g_test_run_suite ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@suite:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
@ -51,10 +51,377 @@
|
|||||||
#include "gslice.h"
|
#include "gslice.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:testing
|
||||||
|
* @title: Testing
|
||||||
|
* @short_description: a test framework
|
||||||
|
* @see_also: <link linkend="gtester">gtester</link>,
|
||||||
|
* <link linkend="gtester-report">gtester-report</link>
|
||||||
|
*
|
||||||
|
* GLib provides a framework for writing and maintaining unit tests
|
||||||
|
* in parallel to the code they are testing. The API is designed according
|
||||||
|
* to established concepts found in the other test frameworks (JUnit, NUnit,
|
||||||
|
* RUnit), which in turn is based on smalltalk unit testing concepts.
|
||||||
|
*
|
||||||
|
* <variablelist>
|
||||||
|
* <varlistentry>
|
||||||
|
* <term>Test case</term>
|
||||||
|
* <listitem>Tests (test methods) are grouped together with their
|
||||||
|
* fixture into test cases.</listitem>
|
||||||
|
* </varlistentry>
|
||||||
|
* <varlistentry>
|
||||||
|
* <term>Fixture</term>
|
||||||
|
* <listitem>A test fixture consists of fixture data and setup and
|
||||||
|
* teardown methods to establish the environment for the test
|
||||||
|
* functions. We use fresh fixtures, i.e. fixtures are newly set
|
||||||
|
* up and torn down around each test invocation to avoid dependencies
|
||||||
|
* between tests.</listitem>
|
||||||
|
* </varlistentry>
|
||||||
|
* <varlistentry>
|
||||||
|
* <term>Test suite</term>
|
||||||
|
* <listitem>Test cases can be grouped into test suites, to allow
|
||||||
|
* subsets of the available tests to be run. Test suites can be
|
||||||
|
* grouped into other test suites as well.</listitem>
|
||||||
|
* </varlistentry>
|
||||||
|
* </variablelist>
|
||||||
|
* The API is designed to handle creation and registration of test suites
|
||||||
|
* and test cases implicitly. A simple call like
|
||||||
|
* |[
|
||||||
|
* g_test_add_func ("/misc/assertions", test_assertions);
|
||||||
|
* ]|
|
||||||
|
* creates a test suite called "misc" with a single test case named
|
||||||
|
* "assertions", which consists of running the test_assertions function.
|
||||||
|
*
|
||||||
|
* In addition to the traditional g_assert(), the test framework provides
|
||||||
|
* an extended set of assertions for string and numerical comparisons:
|
||||||
|
* g_assert_cmpfloat(), g_assert_cmpint(), g_assert_cmpuint(),
|
||||||
|
* g_assert_cmphex(), g_assert_cmpstr(). The advantage of these variants
|
||||||
|
* over plain g_assert() is that the assertion messages can be more
|
||||||
|
* elaborate, and include the values of the compared entities.
|
||||||
|
*
|
||||||
|
* GLib ships with two utilities called gtester and gtester-report to
|
||||||
|
* facilitate running tests and producing nicely formatted test reports.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_quick:
|
||||||
|
*
|
||||||
|
* Returns %TRUE if tests are run in quick mode.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if in quick mode
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_slow:
|
||||||
|
*
|
||||||
|
* Returns %TRUE if tests are run in slow mode.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if in slow mode
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_thorough:
|
||||||
|
*
|
||||||
|
* Returns %TRUE if tests are run in thorough mode.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if in thorough mode
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_perf:
|
||||||
|
*
|
||||||
|
* Returns %TRUE if tests are run in performance mode.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if in performance mode
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_verbose:
|
||||||
|
*
|
||||||
|
* Returns %TRUE if tests are run in verbose mode.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if in verbose mode
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_quiet:
|
||||||
|
*
|
||||||
|
* Returns %TRUE if tests are run in quiet mode.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if in quied mode
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_queue_unref:
|
||||||
|
* @gobject: the object to unref
|
||||||
|
*
|
||||||
|
* Enqueue an object to be released with g_object_unref() during
|
||||||
|
* the next teardown phase. This is equivalent to calling
|
||||||
|
* g_test_queue_destroy() with a destroy callback of g_object_unref().
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GTestTrapFlags:
|
||||||
|
* @G_TEST_TRAP_SILENCE_STDOUT: Redirect stdout of the test child to
|
||||||
|
* <filename>/dev/null</filename> so it cannot be observed on the
|
||||||
|
* console during test runs. The actual output is still captured
|
||||||
|
* though to allow later tests with g_test_trap_assert_stdout().
|
||||||
|
* @G_TEST_TRAP_SILENCE_STDERR: Redirect stderr of the test child to
|
||||||
|
* <filename>/dev/null</filename> so it cannot be observed on the
|
||||||
|
* console during test runs. The actual output is still captured
|
||||||
|
* though to allow later tests with g_test_trap_assert_stderr().
|
||||||
|
* @G_TEST_TRAP_INHERIT_STDIN: If this flag is given, stdin of the
|
||||||
|
* forked child process is shared with stdin of its parent process.
|
||||||
|
* It is redirected to <filename>/dev/null</filename> otherwise.
|
||||||
|
*
|
||||||
|
* Test traps are guards around forked tests.
|
||||||
|
* These flags determine what traps to set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_trap_assert_passed:
|
||||||
|
*
|
||||||
|
* Assert that the last forked test passed.
|
||||||
|
* See g_test_trap_fork().
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_trap_assert_failed:
|
||||||
|
*
|
||||||
|
* Assert that the last forked test failed.
|
||||||
|
* See g_test_trap_fork().
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_trap_assert_stdout:
|
||||||
|
* @soutpattern: a glob-style
|
||||||
|
* <link linkend="glib-Glob-style-pattern-matching">pattern</link>
|
||||||
|
*
|
||||||
|
* Assert that the stdout output of the last forked test matches
|
||||||
|
* @soutpattern. See g_test_trap_fork().
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_trap_assert_stdout_unmatched:
|
||||||
|
* @soutpattern: a glob-style
|
||||||
|
* <link linkend="glib-Glob-style-pattern-matching">pattern</link>
|
||||||
|
*
|
||||||
|
* Assert that the stdout output of the last forked test
|
||||||
|
* does not match @soutpattern. See g_test_trap_fork().
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_trap_assert_stderr:
|
||||||
|
* @serrpattern: a glob-style
|
||||||
|
* <link linkend="glib-Glob-style-pattern-matching">pattern</link>
|
||||||
|
*
|
||||||
|
* Assert that the stderr output of the last forked test
|
||||||
|
* matches @serrpattern. See g_test_trap_fork().
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_trap_assert_stderr_unmatched:
|
||||||
|
* @serrpattern: a glob-style
|
||||||
|
* <link linkend="glib-Glob-style-pattern-matching">pattern</link>
|
||||||
|
*
|
||||||
|
* Assert that the stderr output of the last forked test
|
||||||
|
* does not match @serrpattern. See g_test_trap_fork().
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_test_rand_bit:
|
||||||
|
*
|
||||||
|
* Get a reproducible random bit (0 or 1), see g_test_rand_int()
|
||||||
|
* for details on test case random numbers.
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_assert:
|
||||||
|
* @expr: the expression to check
|
||||||
|
*
|
||||||
|
* Debugging macro to terminate the application if the assertion
|
||||||
|
* fails. If the assertion fails (i.e. the expression is not true),
|
||||||
|
* an error message is logged and the application is terminated.
|
||||||
|
*
|
||||||
|
* The macro can be turned off in final releases of code by defining
|
||||||
|
* #G_DISABLE_ASSERT when compiling the application.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_assert_not_reached:
|
||||||
|
*
|
||||||
|
* Debugging macro to terminate the application if it is ever
|
||||||
|
* reached. If it is reached, an error message is logged and the
|
||||||
|
* application is terminated.
|
||||||
|
*
|
||||||
|
* The macro can be turned off in final releases of code by defining
|
||||||
|
* #G_DISABLE_ASSERT when compiling the application.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_assert_cmpstr:
|
||||||
|
* @s1: a string (may be %NULL)
|
||||||
|
* @cmp: The comparison operator to use.
|
||||||
|
* One of ==, !=, <, >, <=, >=.
|
||||||
|
* @s2: another string (may be %NULL)
|
||||||
|
*
|
||||||
|
* Debugging macro to terminate the application with a warning
|
||||||
|
* message if a string comparison fails. The strings are compared
|
||||||
|
* using g_strcmp0().
|
||||||
|
*
|
||||||
|
* The effect of <literal>g_assert_cmpstr (s1, op, s2)</literal> is
|
||||||
|
* the same as <literal>g_assert (g_strcmp0 (s1, s2) op 0)</literal>.
|
||||||
|
* The advantage of this macro is that it can produce a message that
|
||||||
|
* includes the actual values of @s1 and @s2.
|
||||||
|
*
|
||||||
|
* |[
|
||||||
|
* g_assert_cmpstr (mystring, ==, "fubar");
|
||||||
|
* ]|
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_assert_cmpint:
|
||||||
|
* @n1: an integer
|
||||||
|
* @cmp: The comparison operator to use.
|
||||||
|
* One of ==, !=, <, >, <=, >=.
|
||||||
|
* @n2: another integer
|
||||||
|
*
|
||||||
|
* Debugging macro to terminate the application with a warning
|
||||||
|
* message if an integer comparison fails.
|
||||||
|
*
|
||||||
|
* The effect of <literal>g_assert_cmpint (n1, op, n2)</literal> is
|
||||||
|
* the same as <literal>g_assert (n1 op n2)</literal>. The advantage
|
||||||
|
* of this macro is that it can produce a message that includes the
|
||||||
|
* actual values of @n1 and @n2.
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_assert_cmpuint:
|
||||||
|
* @n1: an unsigned integer
|
||||||
|
* @cmp: The comparison operator to use.
|
||||||
|
* One of ==, !=, <, >, <=, >=.
|
||||||
|
* @n2: another unsigned integer
|
||||||
|
*
|
||||||
|
* Debugging macro to terminate the application with a warning
|
||||||
|
* message if an unsigned integer comparison fails.
|
||||||
|
*
|
||||||
|
* The effect of <literal>g_assert_cmpuint (n1, op, n2)</literal> is
|
||||||
|
* the same as <literal>g_assert (n1 op n2)</literal>. The advantage
|
||||||
|
* of this macro is that it can produce a message that includes the
|
||||||
|
* actual values of @n1 and @n2.
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_assert_cmphex:
|
||||||
|
* @n1: an unsigned integer
|
||||||
|
* @cmp: The comparison operator to use.
|
||||||
|
* One of ==, !=, <, >, <=, >=.
|
||||||
|
* @n2: another unsigned integer
|
||||||
|
*
|
||||||
|
* Debugging macro to terminate the application with a warning
|
||||||
|
* message if an unsigned integer comparison fails.
|
||||||
|
*
|
||||||
|
* This is a variant of g_assert_cmpuint() that displays the numbers
|
||||||
|
* in hexadecimal notation in the message.
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_assert_cmpfloat:
|
||||||
|
* @n1: an floating point number
|
||||||
|
* @cmp: The comparison operator to use.
|
||||||
|
* One of ==, !=, <, >, <=, >=.
|
||||||
|
* @n2: another floating point number
|
||||||
|
*
|
||||||
|
* Debugging macro to terminate the application with a warning
|
||||||
|
* message if a floating point number comparison fails.
|
||||||
|
*
|
||||||
|
* The effect of <literal>g_assert_cmpfloat (n1, op, n2)</literal> is
|
||||||
|
* the same as <literal>g_assert (n1 op n2)</literal>. The advantage
|
||||||
|
* of this macro is that it can produce a message that includes the
|
||||||
|
* actual values of @n1 and @n2.
|
||||||
|
*
|
||||||
|
* Since: 2.16
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_assert_no_error:
|
||||||
|
* @err: a #GError, possibly %NULL
|
||||||
|
*
|
||||||
|
* Debugging macro to terminate the application with a warning
|
||||||
|
* message if a method has returned a #GError.
|
||||||
|
*
|
||||||
|
* The effect of <literal>g_assert_no_error (err)</literal> is
|
||||||
|
* the same as <literal>g_assert (err == NULL)</literal>. The advantage
|
||||||
|
* of this macro is that it can produce a message that includes
|
||||||
|
* the error message and code.
|
||||||
|
*
|
||||||
|
* Since: 2.20
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_assert_error:
|
||||||
|
* @err: a #GError, possibly %NULL
|
||||||
|
* @dom: the expected error domain (a #GQuark)
|
||||||
|
* @c: the expected error code
|
||||||
|
*
|
||||||
|
* Debugging macro to terminate the application with a warning
|
||||||
|
* message if a method has not returned the correct #GError.
|
||||||
|
*
|
||||||
|
* The effect of <literal>g_assert_error (err, dom, c)</literal> is
|
||||||
|
* the same as <literal>g_assert (err != NULL && err->domain
|
||||||
|
* == dom && err->code == c)</literal>. The advantage of this
|
||||||
|
* macro is that it can produce a message that includes the incorrect
|
||||||
|
* error message and code.
|
||||||
|
*
|
||||||
|
* This can only be used to test for a specific error. If you want to
|
||||||
|
* test that @err is set, but don't care what it's set to, just use
|
||||||
|
* <literal>g_assert (err != NULL)</literal>
|
||||||
|
*
|
||||||
|
* Since: 2.20
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GTestCase:
|
||||||
|
*
|
||||||
|
* An opaque structure representing a test case.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GTestSuite:
|
||||||
|
*
|
||||||
|
* An opaque structure representing a test suite.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/* Global variable for storing assertion messages; this is the counterpart to
|
/* Global variable for storing assertion messages; this is the counterpart to
|
||||||
* glibc's (private) __abort_msg variable, and allows developers and crash
|
* glibc's (private) __abort_msg variable, and allows developers and crash
|
||||||
* analysis systems like Apport and ABRT to fish out assertion messages from
|
* analysis systems like Apport and ABRT to fish out assertion messages from
|
||||||
* core dumps, instead of having to catch them on screen output. */
|
* core dumps, instead of having to catch them on screen output.
|
||||||
|
*/
|
||||||
char *__glib_assert_msg = NULL;
|
char *__glib_assert_msg = NULL;
|
||||||
|
|
||||||
/* --- structures --- */
|
/* --- structures --- */
|
||||||
|
Loading…
Reference in New Issue
Block a user