diff options
author | thomasvl <thomasvl@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2008-02-27 03:54:04 +0000 |
---|---|---|
committer | thomasvl <thomasvl@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2008-02-27 03:54:04 +0000 |
commit | f38d4ee0e9157d2ac3c9a08fde37b9e19457fb0f (patch) | |
tree | 4182025226697a53d884a65a13e94adc44e60c74 /Foundation/GTMRegexTest.m | |
parent | b3086cfd9aead0b2900c2d942b289957837286ab (diff) |
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.
Diffstat (limited to 'Foundation/GTMRegexTest.m')
-rw-r--r-- | Foundation/GTMRegexTest.m | 110 |
1 files changed, 110 insertions, 0 deletions
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 { |