| // This source file is part of the Swift.org open source project |
| // |
| // Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors |
| // Licensed under Apache License v2.0 with Runtime Library Exception |
| // |
| // See http://swift.org/LICENSE.txt for license information |
| // See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors |
| // |
| |
| |
| |
| #if DEPLOYMENT_RUNTIME_OBJC || os(Linux) |
| import Foundation |
| import XCTest |
| #else |
| import SwiftFoundation |
| import SwiftXCTest |
| #endif |
| |
| class TestNSTextCheckingResult: XCTestCase { |
| static var allTests: [(String, (TestNSTextCheckingResult) -> () throws -> Void)] { |
| return [ |
| ("test_textCheckingResult", test_textCheckingResult), |
| ] |
| } |
| |
| func test_textCheckingResult() { |
| let patternString = "(a|b)x|123|(c|d)y" |
| do { |
| let patternOptions: NSRegularExpression.Options = [] |
| let regex = try NSRegularExpression(pattern: patternString, options: patternOptions) |
| let searchString = "1x030cy" |
| let searchOptions: NSRegularExpression.MatchingOptions = [] |
| let searchRange = NSMakeRange(0,7) |
| let match: NSTextCheckingResult = regex.firstMatch(in: searchString, options: searchOptions, range: searchRange)! |
| //Positive offset |
| var result = match.adjustingRanges(offset: 1) |
| XCTAssertEqual(result.range(at: 0).location, 6) |
| XCTAssertEqual(result.range(at: 1).location, NSNotFound) |
| XCTAssertEqual(result.range(at: 2).location, 6) |
| //Negative offset |
| result = match.adjustingRanges(offset: -2) |
| XCTAssertEqual(result.range(at: 0).location, 3) |
| XCTAssertEqual(result.range(at: 1).location, NSNotFound) |
| XCTAssertEqual(result.range(at: 2).location, 3) |
| //ZeroOffset |
| result = match.adjustingRanges(offset: 0) |
| XCTAssertEqual(result.range(at: 0).location, 5) |
| XCTAssertEqual(result.range(at: 1).location, NSNotFound) |
| XCTAssertEqual(result.range(at: 2).location, 5) |
| } catch { |
| XCTFail("Unable to build regular expression for pattern \(patternString)") |
| } |
| } |
| } |