diff --git a/Foundation/CPString.j b/Foundation/CPString.j index 0639bb8b1..7ee5d08b9 100644 --- a/Foundation/CPString.j +++ b/Foundation/CPString.j @@ -510,7 +510,7 @@ var CPStringRegexSpecialCharacters = [ */ - (BOOL)hasSuffix:(CPString)aString { - return aString && aString != "" && lastIndexOf(aString) == (length - aString.length); + return aString && aString != "" && length >= aString.length && lastIndexOf(aString) == (length - aString.length); } /*! diff --git a/Tests/Foundation/CPStringTest.j b/Tests/Foundation/CPStringTest.j index 5470b58e4..cc7455f8f 100644 --- a/Tests/Foundation/CPStringTest.j +++ b/Tests/Foundation/CPStringTest.j @@ -233,4 +233,28 @@ [self assert:testStrings[i][1] equals:[testStrings[i][0] lastPathComponent]]; } +- (void)testHasPrefix +{ + [self assertTrue: ["abc" hasPrefix:"a"]]; + [self assertTrue: ["abc" hasPrefix:"ab"]]; + [self assertTrue: ["abc" hasPrefix:"abc"]]; + [self assertFalse:["abc" hasPrefix:"abcd"]]; + [self assertFalse:["abc" hasPrefix:"dbc"]]; + [self assertFalse:["abc" hasPrefix:"bc"]]; + [self assertFalse:["abc" hasPrefix:"c"]]; + [self assertFalse:["abc" hasPrefix:""]]; +} + +- (void)testHasSuffix +{ + [self assertTrue: ["abc" hasSuffix:"c"]]; + [self assertTrue: ["abc" hasSuffix:"bc"]]; + [self assertTrue: ["abc" hasSuffix:"abc"]]; + [self assertFalse:["abc" hasSuffix:"abcd"]]; + [self assertFalse:["abc" hasSuffix:"ab"]]; + [self assertFalse:["abc" hasSuffix:"b"]]; + [self assertFalse:["abc" hasSuffix:"cat"]]; + [self assertFalse:["abc" hasSuffix:""]]; +} + @end