mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
This decreases total testing time by over a minute on my old Mac Pro. It probably has much less effect on systems with fewer cores, but shouldn't be any worse there. Swift SVN r22745
113 lines
2.4 KiB
Swift
113 lines
2.4 KiB
Swift
// RUN: %target-run-simple-swift | FileCheck %s
|
|
|
|
import Foundation
|
|
|
|
println("testing...")
|
|
// CHECK: testing
|
|
|
|
var primes0 = [2, 3, 5, 7, 11]
|
|
|
|
func testTakeActualArray() {
|
|
// Copy primes0 into a Array
|
|
var primes1 = Array<Int>()
|
|
for x in primes0 { primes1.append(x) }
|
|
|
|
// Take the elements of primes1 in an Array
|
|
var primes2 : [Int] = primes1
|
|
|
|
// Check that the copy worked
|
|
// CHECK-NEXT: <2> <3> <5> <7> <11> .
|
|
for x in primes2 { print("<\(x)> ") }
|
|
println(".")
|
|
}
|
|
|
|
testTakeActualArray()
|
|
println("done.") // CHECK-NEXT: done.
|
|
|
|
// Check that we loop over the size of the vector, not its capacity.
|
|
// Found by Anna.
|
|
var fullButStarvingArray = Array<String>()
|
|
for x in fullButStarvingArray { print("\(x) ") }
|
|
|
|
func testArrayFromStream() {
|
|
var x = Array(3..<7)
|
|
// CHECK-NEXT: <3> <4> <5> <6> .
|
|
for y in x { print("<\(y)> ") }
|
|
println(".")
|
|
}
|
|
testArrayFromStream()
|
|
|
|
func testMap() {
|
|
var floatPrimes = primes0.map { Float($0) }
|
|
// CHECK-NEXT: <2.0> <3.0> <5.0> <7.0> <11.0> .
|
|
for y in floatPrimes { print("<\(y)> ") }
|
|
println(".")
|
|
}
|
|
testMap()
|
|
|
|
func testFilter() {
|
|
let a = Array(3..<16)
|
|
println(a.filter { $0 % 4 == 0 })
|
|
// CHECK-NEXT: [4, 8, 12]
|
|
}
|
|
testFilter()
|
|
|
|
func testReverse() {
|
|
let a = Array(7..<12)
|
|
println(a.reverse())
|
|
// CHECK-NEXT: [11, 10, 9, 8, 7]
|
|
}
|
|
testReverse()
|
|
|
|
func testSort() {
|
|
var a = [3, 1, 9, 7]
|
|
println(a.sorted { $0 < $1 })
|
|
// CHECK-NEXT: [1, 3, 7, 9]
|
|
println(a.sorted { $0 > $1 })
|
|
// CHECK-NEXT: [9, 7, 3, 1]
|
|
println(a)
|
|
// CHECK-NEXT: [3, 1, 9, 7]
|
|
a.sort { $0 < $1 }
|
|
println(a)
|
|
// CHECK-NEXT: [1, 3, 7, 9]
|
|
a.sort { $0 > $1 }
|
|
println(a)
|
|
// CHECK-NEXT: [9, 7, 3, 1]
|
|
|
|
// Also make sure the free functions do somethign sane
|
|
a = [3, 1, 9, 7]
|
|
println(sorted(a))
|
|
// CHECK-NEXT: [1, 3, 7, 9]
|
|
println(sorted(a) { $0 > $1 })
|
|
// CHECK-NEXT: [9, 7, 3, 1]
|
|
sort(&a)
|
|
println(a)
|
|
// CHECK-NEXT: [1, 3, 7, 9]
|
|
sort(&a) { $0 > $1 }
|
|
println(a)
|
|
// CHECK-NEXT: [9, 7, 3, 1]
|
|
}
|
|
testSort()
|
|
|
|
func testArrayOfVoid() {
|
|
// This used to crash because it generated an array of void with stride == 0
|
|
// CHECK-NEXT: 123
|
|
[1,2,3].map {
|
|
print($0)
|
|
}
|
|
println()
|
|
}
|
|
testArrayOfVoid()
|
|
|
|
func testMutableArray() {
|
|
var m = NSMutableArray(array: ["fu", "bar", "buzz"])
|
|
let a = m as NSArray as [NSString]
|
|
println(a) // CHECK-NEXT: [fu, bar, buzz]
|
|
m.addObject("goop")
|
|
println(a) // CHECK-NEXT: [fu, bar, buzz]
|
|
}
|
|
testMutableArray()
|
|
|
|
println("done!") // CHECK-NEXT: {{^done!$}}
|
|
|