Files
swift-mirror/stdlib/private/StdlibUnittest/CheckStrideable.swift.gyb
2017-01-06 16:41:22 +01:00

33 lines
1011 B
Plaintext

//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://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)))
}
}
}