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; }