void test_options() { String *pat = String::create(state, "."); Regexp* re = Regexp::create(state); re->initialize(state, pat, Fixnum::from(0)); TS_ASSERT_EQUALS(as<Integer>(re->options(state))->to_native(), 0); }
void test_create_with_named_captures() { String *pat = String::create(state, "(?<blah>.)"); Regexp* re = Regexp::create(state); re->initialize(state, pat, Fixnum::from(0)); TS_ASSERT_EQUALS(re->source(), pat); TS_ASSERT(re->names()->kind_of_p(state, G(lookuptable))); }
void test_initialize() { String *pat = String::create(state, "."); Regexp* re = Regexp::create(state); re->initialize(state, pat, Fixnum::from(0)); TS_ASSERT_EQUALS(re->source(), pat); TS_ASSERT_EQUALS(re->names(), cNil); }
void test_create_with_bad_pattern() { char buf[1024]; memset(buf, 0, 1024); String *pat = String::create(state, "(?"); Regexp* re = Regexp::create(state); TS_ASSERT_THROWS(re->initialize(state, pat, Fixnum::from(0)), const RubyException &); }
void test_match_region_without_matches() { String *pat = String::create(state, "d"); Regexp* re = Regexp::create(state); re->initialize(state, pat, Fixnum::from(0)); String *input = String::create(state, "abc"); Fixnum* start = Fixnum::from(0); Fixnum* end = Fixnum::from(3); Object* forward = cTrue; MatchData* matches = (MatchData*)re->match_region(state, input, start, end, forward); TS_ASSERT(matches->nil_p()); }
void test_match_start() { String *pat = String::create(state, "."); Regexp* re = Regexp::create(state); re->initialize(state, pat, Fixnum::from(0)); String *input = String::create(state, "abc"); Fixnum* start = Fixnum::from(1); MatchData* matches = (MatchData*)re->match_start(state, input, start); TS_ASSERT(!matches->nil_p()); TS_ASSERT_EQUALS(matches->region()->num_fields(), 0); TS_ASSERT_EQUALS(as<Integer>(matches->full()->at(state, 0))->to_native(), 1); TS_ASSERT_EQUALS(as<Integer>(matches->full()->at(state, 1))->to_native(), 2); }
void test_match_region() { String *pat = String::create(state, "."); Regexp* re = Regexp::create(state); re->initialize(state, pat, Fixnum::from(0), Qnil); String *input = String::create(state, "abc"); Fixnum* start = Fixnum::from(0); Fixnum* end = Fixnum::from(3); Object* forward = Qtrue; MatchData* matches = (MatchData*)re->match_region(state, input, start, end, forward); TS_ASSERT(!matches->nil_p()); TS_ASSERT_EQUALS(matches->region()->num_fields(), 0U); TS_ASSERT_EQUALS(as<Integer>(matches->full()->at(state, 0))->to_native(), 0); TS_ASSERT_EQUALS(as<Integer>(matches->full()->at(state, 1))->to_native(), 1); }
void test_match_region_with_backward_captures() { String *pat = String::create(state, ".(.)"); Regexp* re = Regexp::create(state); re->initialize(state, pat, Fixnum::from(0)); String *input = String::create(state, "abc"); Fixnum* start = Fixnum::from(0); Fixnum* end = Fixnum::from(3); Object* forward = cFalse; MatchData* matches = re->match_region(state, input, start, end, forward); TS_ASSERT(!matches->nil_p()); TS_ASSERT_EQUALS(as<Integer>(matches->full()->at(state, 0))->to_native(), 1); TS_ASSERT_EQUALS(as<Integer>(matches->full()->at(state, 1))->to_native(), 3); TS_ASSERT_EQUALS(matches->region()->num_fields(), 1); TS_ASSERT_EQUALS(as<Integer>(as<Tuple>(matches->region()->at(state, 0))->at(state, 0))->to_native(), 2); TS_ASSERT_EQUALS(as<Integer>(as<Tuple>(matches->region()->at(state, 0))->at(state, 1))->to_native(), 3); }