mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 17:57:25 +00:00
254 lines
18 KiB
C
254 lines
18 KiB
C
#include "clar_libgit2.h"
|
|
|
|
void test_integer__multiply_int64_no_overflow(void)
|
|
{
|
|
#if !defined(git__multiply_int64_overflow)
|
|
int64_t result = 0;
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x8000000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x1));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x1));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0x2));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x2)));
|
|
cl_assert_equal_i(result, INT64_C(-0x2));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0x7ffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(-0x7ffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(0x800000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(-0x800000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0x7fffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(-0x7fffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x1));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x1));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(-0x2));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0x2));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(-0x7ffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0x7ffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(-0x800000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(0x800000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(-0x7fffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0x7fffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x2));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x2));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0x4));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x2)));
|
|
cl_assert_equal_i(result, INT64_C(-0x4));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0xffffffffffffffe));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(-0xffffffffffffffe));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(0x1000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(-0x1000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x2));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x2));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(-0x4));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0x4));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(-0xffffffffffffffe));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert_equal_i(result, INT64_C(0xffffffffffffffe));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(-0x1000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x800000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(0x1000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x4000000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(-0x8000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x7ffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x7ffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0xffffffffffffffe));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x2)));
|
|
cl_assert_equal_i(result, INT64_C(-0xffffffffffffffe));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x7ffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x7ffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(-0xffffffffffffffe));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0xffffffffffffffe));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x800000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x800000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0x1000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x2)));
|
|
cl_assert_equal_i(result, INT64_C(-0x1000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x800000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x800000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(-0x1000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x2)));
|
|
cl_assert_equal_i(result, INT64_C(0x1000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x7fffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x7fffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x4000000000000000), INT64_C(0x2)));
|
|
cl_assert_equal_i(result, INT64_C(-0x8000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x7fffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(0x7fffffffffffffff));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x0)));
|
|
cl_assert_equal_i(result, INT64_C(0x0));
|
|
#endif
|
|
}
|
|
|
|
void test_integer__multiply_int64_overflow(void)
|
|
{
|
|
#if !defined(git__multiply_int64_overflow)
|
|
int64_t result = 0;
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x4000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x8000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x8000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x8000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x8000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x8000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x8000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x4000000000000000), INT64_C(0x2)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x2)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x2)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x8000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x2)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x2)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x8000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x2)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x2)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x7ffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x800000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x7fffffffffffffff)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x8000000000000000)));
|
|
#endif
|
|
}
|
|
|
|
void test_integer__multiply_int64_edge_cases(void)
|
|
{
|
|
#if !defined(git__multiply_int64_overflow)
|
|
int64_t result = 0;
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x1)));
|
|
cl_assert_equal_i(result, INT64_C(-0x8000000000000000));
|
|
cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x8000000000000000)));
|
|
cl_assert_equal_i(result, INT64_C(-0x8000000000000000));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x8000000000000000)));
|
|
cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x1)));
|
|
#endif
|
|
}
|