glib/docs
Eric Blake 2ab2ce57e6 gtestutils: Improve g_assert_cmpuint
While x86_64 has enough precision in long double to do a round trip
from guint64 to long double and back, this is platform-specific, and
is a disservice to users trying to debug failing unit tests on other
architectures where it loses precision for g_assert_cmp{int,uint,hex}.
See also https://bugzilla.gnome.org/show_bug.cgi?id=788385 which
mentions having to add casts to specifically silence the compiler on
platforms where the precision loss occurs.

Meanwhile, g_assert_cmpuint() does an unsigned comparison, but outputs
signed values if the comparison fails, which is confusing.

Fix both issues by introducing a new g_assertion_message_cmpint()
function with a new 'u' numtype.  For backwards compatibility, the
macros still call into the older g_assertion_message_cmpnum() when not
targetting 2.78, and that function still works when passed 'i' and 'x'
types even though code compiled for 2.78 and later will never invoke
it with numtype anything other than 'f'.  Note that g_assert_cmpmem
can also take advantage of the new code, even though in practice,
comparison between two size_t values representing array lengths that
can actually be compiled is unlikely to have ever hit the precision
loss.  The macros in signals.c test code does not have to worry about
versioning, since it is not part of the glib library proper.

Closes #2997
Signed-off-by: Eric Blake <eblake@redhat.com>
2023-05-09 08:28:09 -05:00
..
reference gtestutils: Improve g_assert_cmpuint 2023-05-09 08:28:09 -05:00
backports.md docs: Add a backports policy 2022-05-19 12:52:26 +01:00
CODEOWNERS docs: Add lb90 as a Windows maintainer 2023-05-02 11:19:31 +01:00
macros.md docs: Port docs/macros.txt to Markdown and update it 2023-04-28 00:07:12 +01:00
meson-version.md docs: Update Meson version policy to mention freedesktop SDK 2022-11-24 12:13:21 +00:00
rationales.md docs: Move README.rationale to docs subdirectory 2022-05-11 13:02:49 +01:00
releasing.md docs: Document the release process 2022-06-21 16:16:10 +01:00
roadmap.md docs: Document the release process 2022-06-21 16:16:10 +01:00
supported-platforms.md docs: Fix list formatting in supported-platforms.md 2023-05-02 14:34:21 +01:00
testing.md docs: Add a testing policy 2022-06-14 15:19:32 +01:00
toolchain-requirements.md Require C99's __VA_ARGS__ 2022-06-30 01:46:32 +01:00