mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
This reverts commitecfa406fc5, which was reinstating3c5b393e0c. It does not revert one test change from that commit, because inexplicably one of the tests is still failing, probably due to some other changes that have happened since. I'm leaving a ticket open to investigate. I've added one of the new cases that is failing as a result of this change. This is being reverted not because of bugs in this particular commit, but because it seems to be exposing other bugs in the type checker that are resulting in source compatibility problems. We need to shake these other bugs out of the type checker before bringing this change back.
77 lines
2.1 KiB
Swift
77 lines
2.1 KiB
Swift
// RUN: %target-run-simple-swift
|
|
// REQUIRES: executable_test
|
|
// REQUIRES: objc_interop
|
|
|
|
import StdlibUnittest
|
|
import StdlibCollectionUnittest
|
|
import Foundation
|
|
|
|
var DataTestSuite = TestSuite("Data")
|
|
|
|
DataTestSuite.test("Data.Iterator semantics") {
|
|
// Empty data
|
|
checkSequence([], Data())
|
|
|
|
// Small data
|
|
checkSequence([1,2,4,8,16], Data(bytes: [1,2,4,8,16]))
|
|
|
|
// Boundary conditions
|
|
checkSequence([5], Data(bytes: [5]))
|
|
checkSequence(1...31, Data(bytes: Array(1...31)))
|
|
checkSequence(1...32, Data(bytes: Array(1...32)))
|
|
checkSequence(1...33, Data(bytes: Array(1...33)))
|
|
|
|
// Large data
|
|
var data = Data(count: 65535)
|
|
data.withUnsafeMutableBytes { (ptr: UnsafeMutablePointer<UInt8>) -> () in
|
|
for i in 0..<data.count {
|
|
ptr[i] = UInt8(i % 23)
|
|
}
|
|
}
|
|
checkSequence((0..<65535).lazy.map({ UInt8($0 % 23) }), data)
|
|
}
|
|
|
|
DataTestSuite.test("associated types") {
|
|
typealias Subject = Data
|
|
expectRandomAccessCollectionAssociatedTypes(
|
|
collectionType: Subject.self,
|
|
iteratorType: Data.Iterator.self,
|
|
subSequenceType: Subject.self,
|
|
indexType: Int.self,
|
|
indexDistanceType: Int.self,
|
|
indicesType: CountableRange<Int>.self)
|
|
}
|
|
|
|
DataTestSuite.test("Data SubSequence") {
|
|
let array: [UInt8] = [0, 1, 2, 3, 4, 5, 6, 7]
|
|
var data = Data(bytes: array)
|
|
|
|
// FIXME: Iteration over Data slices is currently broken:
|
|
// [SR-4292] Foundation.Data.copyBytes is zero-based.
|
|
// Data.Iterator assumes it is not.
|
|
// checkRandomAccessCollection(array, data)
|
|
|
|
for i in 0..<data.count {
|
|
for j in i..<data.count {
|
|
var dataSlice = data[i..<j]
|
|
let arraySlice = array[i..<j]
|
|
if dataSlice.count > 0 {
|
|
expectEqual(dataSlice.startIndex, i)
|
|
expectEqual(dataSlice.endIndex, j)
|
|
|
|
// FIXME: Iteration over Data slices is currently broken:
|
|
// [SR-4292] Foundation.Data.copyBytes is zero-based.
|
|
// Data.Iterator assumes it is not.
|
|
// expectEqual(dataSlice[i], arraySlice[i])
|
|
|
|
dataSlice[i] = 0xFF
|
|
|
|
expectEqual(dataSlice.startIndex, i)
|
|
expectEqual(dataSlice.endIndex, j)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
runAllTests()
|