PostgreSQL/src/test/modules/test_int128/t/001_test_int128.pl
Dean Rasheed 8c7445a008 Convert src/tools/testint128.c into a test module.
This creates a new test module src/test/modules/test_int128 and moves
src/tools/testint128.c into it so that it can be built using the
normal build system, allowing the 128-bit integer arithmetic functions
in src/include/common/int128.h to be tested automatically. For now,
the tests are skipped on platforms that don't have native int128
support.

While at it, fix the test128 union in the test code: the "hl" member
of test128 was incorrectly defined to be a union instead of a struct,
which meant that the tests were only ever setting and checking half of
each 128-bit integer value.

Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Reviewed-by: John Naylor <johncnaylorls@gmail.com>
Discussion: https://postgr.es/m/CAEZATCWgBMc9ZwKMYqQpaQz2X6gaamYRB+RnMsUNcdMcL2Mj_w@mail.gmail.com
2025-08-06 09:41:11 +01:00

28 lines
558 B
Perl

# Copyright (c) 2025, PostgreSQL Global Development Group
# Test 128-bit integer arithmetic code in int128.h
use strict;
use warnings FATAL => 'all';
use PostgreSQL::Test::Utils;
use Test::More;
# Run the test program with 1M iterations
my $exe = "test_int128";
my $size = 1_000_000;
note "testing executable $exe";
my ($stdout, $stderr) = run_command([ $exe, $size ]);
SKIP:
{
skip "no native int128 type", 2 if $stdout =~ /skipping tests/;
is($stdout, "", "test_int128: no stdout");
is($stderr, "", "test_int128: no stderr");
}
done_testing();