From f38d4ee0e9157d2ac3c9a08fde37b9e19457fb0f Mon Sep 17 00:00:00 2001 From: thomasvl Date: Wed, 27 Feb 2008 03:54:04 +0000 Subject: Found and fixed a bug in the regex enumerators that was causing them to incorrectly walk a string when using '^' in an expression. Added GTMScriptRunner for spawning scripts. --- Foundation/GTMRegexTest.m | 110 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) (limited to 'Foundation/GTMRegexTest.m') diff --git a/Foundation/GTMRegexTest.m b/Foundation/GTMRegexTest.m index ef7d1e5..71c8405 100644 --- a/Foundation/GTMRegexTest.m +++ b/Foundation/GTMRegexTest.m @@ -503,6 +503,69 @@ NSArray *allSegments = [enumerator allObjects]; STAssertNotNil(allSegments, nil); STAssertEquals(6U, [allSegments count], nil); + + // test we are getting the flags right for newline + regex = [GTMRegex regexWithPattern:@"^a"]; + STAssertNotNil(regex, nil); + enumerator = [regex segmentEnumeratorForString:@"aa\naa"]; + STAssertNotNil(enumerator, nil); + // "a" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"a", nil); + // "a\n" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertFalse([seg isMatch], nil); + STAssertEqualStrings([seg string], @"a\n", nil); + // "a" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"a", nil); + // "a" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertFalse([seg isMatch], nil); + STAssertEqualStrings([seg string], @"a", nil); + // (end) + seg = [enumerator nextObject]; + STAssertNil(seg, nil); + + // test we are getting the flags right for newline, part 2 + regex = [GTMRegex regexWithPattern:@"^a*$"]; + STAssertNotNil(regex, nil); + enumerator = [regex segmentEnumeratorForString:@"aa\naa\nbb\naa"]; + STAssertNotNil(enumerator, nil); + // "aa" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"aa", nil); + // "\n" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertFalse([seg isMatch], nil); + STAssertEqualStrings([seg string], @"\n", nil); + // "aa" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"aa", nil); + // "\nbb\n" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertFalse([seg isMatch], nil); + STAssertEqualStrings([seg string], @"\nbb\n", nil); + // "aa" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"aa", nil); + // (end) + seg = [enumerator nextObject]; + STAssertNil(seg, nil); } - (void)testMatchSegmentEnumeratorForString { @@ -589,6 +652,53 @@ NSArray *allSegments = [enumerator allObjects]; STAssertNotNil(allSegments, nil); STAssertEquals(3U, [allSegments count], nil); + + // test we are getting the flags right for newline + regex = [GTMRegex regexWithPattern:@"^a"]; + STAssertNotNil(regex, nil); + enumerator = [regex matchSegmentEnumeratorForString:@"aa\naa"]; + STAssertNotNil(enumerator, nil); + // "a" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"a", nil); + // "a\n" - skipped + // "a" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"a", nil); + // "a" - skipped + // (end) + seg = [enumerator nextObject]; + STAssertNil(seg, nil); + + // test we are getting the flags right for newline, part 2 + regex = [GTMRegex regexWithPattern:@"^a*$"]; + STAssertNotNil(regex, nil); + enumerator = [regex matchSegmentEnumeratorForString:@"aa\naa\nbb\naa"]; + STAssertNotNil(enumerator, nil); + // "aa" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"aa", nil); + // "\n" - skipped + // "aa" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"aa", nil); + // "\nbb\n" - skipped + // "aa" + seg = [enumerator nextObject]; + STAssertNotNil(seg, nil); + STAssertTrue([seg isMatch], nil); + STAssertEqualStrings([seg string], @"aa", nil); + // (end) + seg = [enumerator nextObject]; + STAssertNil(seg, nil); } - (void)testStringByReplacingMatchesInStringWithReplacement { -- cgit v1.2.3