| //===----------------------------------------------------------------------===// |
| // |
| // 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 |
| // |
| //===----------------------------------------------------------------------===// |
| |
| %{ |
| from gyb_stdlib_unittest_support import TRACE, stackTrace, trace |
| }% |
| |
| public func checkStrideable<S : Strideable>( |
| instances: [S], |
| distances: [S.Stride], |
| distanceOracle: (Int, Int) -> S.Stride, |
| ${TRACE} |
| ) { |
| for i in instances.indices { |
| let first = instances[i] |
| for j in instances.indices { |
| let second = instances[j] |
| expectEqual(distanceOracle(i, j), first.distance(to: second)) |
| expectEqual(second, first.advanced(by: distanceOracle(i, j))) |
| } |
| } |
| } |
| |