aboutsummaryrefslogtreecommitdiffstats
path: root/libj2_j2i_sub_j2i.c
diff options
context:
space:
mode:
Diffstat (limited to 'libj2_j2i_sub_j2i.c')
-rw-r--r--libj2_j2i_sub_j2i.c45
1 files changed, 43 insertions, 2 deletions
diff --git a/libj2_j2i_sub_j2i.c b/libj2_j2i_sub_j2i.c
index 0492bea..78dea79 100644
--- a/libj2_j2i_sub_j2i.c
+++ b/libj2_j2i_sub_j2i.c
@@ -100,14 +100,12 @@ check(uintmax_t a_high, uintmax_t a_low, uintmax_t b_high, uintmax_t b_low)
r = a;
EXPECT(libj2_j2i_sub_j2i_to_j2i_overflow(CONST_ARG &r, CONST_ARG &b, &r) == expected_overflow);
- EXPECT(libj2_j2i_eq_j2i(&a, &a_saved));
EXPECT(libj2_j2i_eq_j2i(&b, &b_saved));
EXPECT(libj2_j2i_eq_j2i(&r, &expected));
r = b;
EXPECT(libj2_j2i_sub_j2i_to_j2i_overflow(CONST_ARG &a, CONST_ARG &r, &r) == expected_overflow);
EXPECT(libj2_j2i_eq_j2i(&a, &a_saved));
- EXPECT(libj2_j2i_eq_j2i(&b, &b_saved));
EXPECT(libj2_j2i_eq_j2i(&r, &expected));
r = a;
@@ -115,6 +113,29 @@ check(uintmax_t a_high, uintmax_t a_low, uintmax_t b_high, uintmax_t b_low)
EXPECT(libj2_j2i_is_zero(&r));
r = (struct libj2_j2i){111, 222};
+ libj2_j2i_sat_sub_j2i_to_j2i(CONST_ARG &a, CONST_ARG &b, &r);
+ EXPECT(libj2_j2i_eq_j2i(&a, &a_saved));
+ EXPECT(libj2_j2i_eq_j2i(&b, &b_saved));
+ EXPECT(expected_overflow > 0 ? libj2_j2i_is_max(&r) :
+ expected_overflow ? libj2_j2i_is_min(&r) : libj2_j2i_eq_j2i(&r, &expected));
+
+ r = a;
+ libj2_j2i_sat_sub_j2i_to_j2i(CONST_ARG &r, CONST_ARG &b, &r);
+ EXPECT(libj2_j2i_eq_j2i(&b, &b_saved));
+ EXPECT(expected_overflow > 0 ? libj2_j2i_is_max(&r) :
+ expected_overflow ? libj2_j2i_is_min(&r) : libj2_j2i_eq_j2i(&r, &expected));
+
+ r = b;
+ libj2_j2i_sat_sub_j2i_to_j2i(CONST_ARG &a, CONST_ARG &r, &r);
+ EXPECT(libj2_j2i_eq_j2i(&a, &a_saved));
+ EXPECT(expected_overflow > 0 ? libj2_j2i_is_max(&r) :
+ expected_overflow ? libj2_j2i_is_min(&r) : libj2_j2i_eq_j2i(&r, &expected));
+
+ r = a;
+ libj2_j2i_sat_sub_j2i_to_j2i(CONST_ARG &r, CONST_ARG &r, &r);
+ EXPECT(libj2_j2i_is_zero(&r));
+
+ r = (struct libj2_j2i){111, 222};
libj2_j2i_sub_j2i_to_j2i(CONST_ARG &a, CONST_ARG &b, &r);
EXPECT(libj2_j2i_eq_j2i(&a, &a_saved));
EXPECT(libj2_j2i_eq_j2i(&b, &b_saved));
@@ -152,6 +173,16 @@ check(uintmax_t a_high, uintmax_t a_low, uintmax_t b_high, uintmax_t b_low)
EXPECT(libj2_j2i_is_zero(&r));
r = a;
+ libj2_j2i_sat_sub_j2i(&r, CONST_ARG &b);
+ EXPECT(libj2_j2i_eq_j2i(&b, &b_saved));
+ EXPECT(expected_overflow > 0 ? libj2_j2i_is_max(&r) :
+ expected_overflow ? libj2_j2i_is_min(&r) : libj2_j2i_eq_j2i(&r, &expected));
+
+ r = a;
+ libj2_j2i_sat_sub_j2i(&r, CONST_ARG &r);
+ EXPECT(libj2_j2i_is_zero(&r));
+
+ r = a;
libj2_j2i_sub_j2i(&r, CONST_ARG &b);
EXPECT(libj2_j2i_eq_j2i(&b, &b_saved));
EXPECT(libj2_j2i_eq_j2i(&r, &expected));
@@ -178,6 +209,16 @@ check(uintmax_t a_high, uintmax_t a_low, uintmax_t b_high, uintmax_t b_low)
EXPECT(libj2_j2i_is_zero(&r));
r = b;
+ libj2_j2i_sat_rsub_j2i(&r, CONST_ARG &a);
+ EXPECT(libj2_j2i_eq_j2i(&a, &a_saved));
+ EXPECT(expected_overflow > 0 ? libj2_j2i_is_max(&r) :
+ expected_overflow ? libj2_j2i_is_min(&r) : libj2_j2i_eq_j2i(&r, &expected));
+
+ r = a;
+ libj2_j2i_sat_rsub_j2i(&r, CONST_ARG &r);
+ EXPECT(libj2_j2i_is_zero(&r));
+
+ r = b;
libj2_j2i_rsub_j2i(&r, CONST_ARG &a);
EXPECT(libj2_j2i_eq_j2i(&a, &a_saved));
EXPECT(libj2_j2i_eq_j2i(&r, &expected));