From 14ff7470248c4ed1bfddb846237514c56b7b59bb Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 5 Jan 2023 16:19:41 -0700 Subject: [PATCH] [set] Add tests for inverted set range iteration --- src/test-set.cc | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/test-set.cc b/src/test-set.cc index e760c98f8..a0b7ac9ea 100644 --- a/src/test-set.cc +++ b/src/test-set.cc @@ -107,5 +107,34 @@ main (int argc, char **argv) assert (v2.get_population () == 3); } + /* Test inverted sets. */ + { + hb_set_t s; + s.invert(); + s.del (5); + + hb_codepoint_t start = HB_SET_VALUE_INVALID, last = HB_SET_VALUE_INVALID; + assert (s.next_range (&start, &last)); + assert (start == 0); + assert (last == 4); + assert (s.next_range (&start, &last)); + assert (start == 6); + assert (last == HB_SET_VALUE_INVALID - 1); + assert (!s.next_range (&start, &last)); + + start = HB_SET_VALUE_INVALID; + last = HB_SET_VALUE_INVALID; + assert (s.previous_range (&start, &last)); + assert (start == 6); + assert (last == HB_SET_VALUE_INVALID - 1); + assert (s.previous_range (&start, &last)); + assert (start == 0); + assert (last == 4); + assert (!s.previous_range (&start, &last)); + + /* Inverted set returns true for invalid value. */ + assert (s.has (HB_SET_VALUE_INVALID)); + } + return 0; }