aboutsummaryrefslogtreecommitdiff
path: root/Foundation/GTMRegexTest.m
diff options
context:
space:
mode:
authorGravatar thomasvl <thomasvl@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-02-27 03:54:04 +0000
committerGravatar thomasvl <thomasvl@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-02-27 03:54:04 +0000
commitf38d4ee0e9157d2ac3c9a08fde37b9e19457fb0f (patch)
tree4182025226697a53d884a65a13e94adc44e60c74 /Foundation/GTMRegexTest.m
parentb3086cfd9aead0b2900c2d942b289957837286ab (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.m110
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 {