Files
swift-mirror/validation-test/stdlib/Slice/Inputs/slice.gyb
Jordan Rose b319e3da32 stdlib: Adjust to insert(contentsOf:at:) and append(contentsOf:)
instead of insertContents(of:at:) and appendContents(of:),
originally insertContentsOf(_:at:) and appendContentsOf(_:)
per internal discussion.
2016-02-25 12:50:39 -08:00

83 lines
3.1 KiB
Plaintext

%import inspect
%import os.path
%import sys
%sys.path = [os.path.split(inspect.getframeinfo(inspect.currentframe()).filename)[0] or '.'] + sys.path
% Base = "%s%s%sCollection" % (base_kind, traversal, 'Mutable' if mutable else '')
do {
let prefix: [Int] = ${prefix}
let suffix: [Int] = ${suffix}
func makeCollection(elements: [OpaqueValue<Int>])
-> ${Wrapper}<${Base}<OpaqueValue<Int>>> {
var baseElements = prefix.map(OpaqueValue.init)
baseElements.append(contentsOf: elements)
baseElements.append(contentsOf: suffix.map(OpaqueValue.init))
let base = ${Base}(elements: baseElements)
let startIndex = base.startIndex.advanced(by: numericCast(prefix.count))
let endIndex = base.startIndex.advanced(
by: numericCast(prefix.count + elements.count))
return ${Wrapper}(
_base: base,
bounds: startIndex..<endIndex)
}
func makeCollectionOfEquatable(elements: [MinimalEquatableValue])
-> ${Wrapper}<${Base}<MinimalEquatableValue>> {
var baseElements = prefix.map(MinimalEquatableValue.init)
baseElements.append(contentsOf: elements)
baseElements.append(contentsOf: suffix.map(MinimalEquatableValue.init))
let base = ${Base}(elements: baseElements)
let startIndex = base.startIndex.advanced(by: numericCast(prefix.count))
let endIndex = base.startIndex.advanced(
by: numericCast(prefix.count + elements.count))
return ${Wrapper}(
_base: base,
bounds: startIndex..<endIndex)
}
func makeCollectionOfComparable(elements: [MinimalComparableValue])
-> ${Wrapper}<${Base}<MinimalComparableValue>> {
var baseElements = prefix.map(MinimalComparableValue.init)
baseElements.append(contentsOf: elements)
baseElements.append(contentsOf: suffix.map(MinimalComparableValue.init))
let base = ${Base}(elements: baseElements)
let startIndex = base.startIndex.advanced(by: numericCast(prefix.count))
let endIndex = base.startIndex.advanced(
by: numericCast(prefix.count + elements.count))
return ${Wrapper}(
_base: base,
bounds: startIndex..<endIndex)
}
var checksAdded: Box<Set<String>> = Box([])
var resiliencyChecks = CollectionMisuseResiliencyChecks.all
resiliencyChecks.creatingOutOfBoundsIndicesBehavior = .expectationFailure
resiliencyChecks.subscriptOnOutOfBoundsIndicesBehavior = .trap
resiliencyChecks.subscriptRangeOnOutOfBoundsRangesBehavior = .trap
SliceTests.add${traversal}${'Mutable' if Wrapper == 'MutableSlice' else ''}CollectionTests(
"${name}.",
makeCollection: makeCollection,
wrapValue: identity,
extractValue: identity,
makeCollectionOfEquatable: makeCollectionOfEquatable,
wrapValueIntoEquatable: identityEq,
extractValueFromEquatable: identityEq,
% if Wrapper == 'MutableSlice':
makeCollectionOfComparable: makeCollectionOfComparable,
wrapValueIntoComparable: identityComp,
extractValueFromComparable: identityComp,
% end
checksAdded: checksAdded,
resiliencyChecks: resiliencyChecks,
outOfBoundsIndexOffset: 6
% if Wrapper == 'MutableSlice':
, withUnsafeMutableBufferPointerIsSupported: false,
isFixedLengthCollection: true
% end
)
}