void test_compare_bytes_out_of_bounds() { CharArray* a = String::create(state, "xyZzy")->data(); CharArray* b = String::create(state, "xyzzy")->data(); Fixnum* zero = Fixnum::from(0); Fixnum* neg = Fixnum::from(-1); TS_ASSERT_THROWS_ASSERT(a->compare_bytes(state, b, neg, zero), const RubyException &e, TS_ASSERT(Exception::object_bounds_exceeded_error_p(state, e.exception))); TS_ASSERT_THROWS_ASSERT(a->compare_bytes(state, b, zero, neg), const RubyException &e, TS_ASSERT(Exception::object_bounds_exceeded_error_p(state, e.exception))); }
void test_compare_bytes() { CharArray* a = String::create(state, "xyZzyx")->data(); CharArray* b = String::create(state, "xyzzyx")->data(); Fixnum* two = Fixnum::from(2); Fixnum* three = Fixnum::from(3); Fixnum* size = Fixnum::from(8); Fixnum* size1 = Fixnum::from(9); TS_ASSERT_EQUALS(a->size(state)->to_native(), 8); TS_ASSERT_EQUALS(b->size(state)->to_native(), 8); TS_ASSERT_EQUALS(a->compare_bytes(state, b, two, two), Fixnum::from(0)); TS_ASSERT_EQUALS(a->compare_bytes(state, b, two, three), Fixnum::from(-1)); TS_ASSERT_EQUALS(a->compare_bytes(state, b, three, two), Fixnum::from(1)); TS_ASSERT_EQUALS(a->compare_bytes(state, b, three, three), Fixnum::from(-1)); TS_ASSERT_EQUALS(a->compare_bytes(state, b, size, size), Fixnum::from(-1)); TS_ASSERT_EQUALS(a->compare_bytes(state, b, size1, size1), Fixnum::from(-1)); }