blob: 6ad5a176b92beec1f51a024d9fda42377a58cd92 [file] [log] [blame]
// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// REQUIRES: objc_interop
// REQUIRES: rdar30317033
import CoreGraphics
import Foundation
import StdlibUnittest
var CGFloatTestSuite = TestSuite("CGFloat")
CGFloatTestSuite.test("literals") {
var flt: CGFloat = 4.125
expectEqual(4.125, flt)
flt = 42
expectEqual(42, flt)
}
CGFloatTestSuite.test("init") {
expectEqual(0.0, CGFloat())
expectEqual(4.125, CGFloat(Float(4.125)))
expectEqual(4.125, CGFloat(Double(4.125)))
expectEqual(4.125, CGFloat(CGFloat(Double(4.125))))
expectEqual(42, CGFloat(Int(42)))
expectEqual(42, CGFloat(Int8(42)))
expectEqual(42, CGFloat(Int16(42)))
expectEqual(42, CGFloat(Int32(42)))
expectEqual(42, CGFloat(Int64(42)))
expectEqual(42, CGFloat(UInt(42)))
expectEqual(42, CGFloat(UInt8(42)))
expectEqual(42, CGFloat(UInt16(42)))
expectEqual(42, CGFloat(UInt32(42)))
expectEqual(42, CGFloat(UInt64(42)))
}
CGFloatTestSuite.test("initOtherTypesFromCGFloat") {
let flt: CGFloat = 4.125
expectEqual(4.125, Float(flt))
expectEqual(4.125, Double(flt))
expectEqual(4, Int(flt))
expectEqual(4, Int8(flt))
expectEqual(4, Int16(flt))
expectEqual(4, Int32(flt))
expectEqual(4, Int64(flt))
expectEqual(4, UInt(flt))
expectEqual(4, UInt8(flt))
expectEqual(4, UInt16(flt))
expectEqual(4, UInt32(flt))
expectEqual(4, UInt64(flt))
}
CGFloatTestSuite.test("comparisons") {
let instances: [CGFloat] = [ 2.71, 3.14 ]
checkHashable(instances, equalityOracle: { $0 == $1 })
checkComparable(instances, oracle: { $0 <=> $1 })
}
CGFloatTestSuite.test("arithmetic") {
let x: CGFloat = 0.25
let y: CGFloat = 4
let z: CGFloat = 0.5
expectEqual(4.25, x + y)
expectEqual(-3.75, x - y)
expectEqual(1.0, x * y)
expectEqual(0.0625, x / y)
}
CGFloatTestSuite.test("striding") {
do {
var result = [CGFloat]()
for f in stride(from: (1.0 as CGFloat), to: 2.0, by: 0.5) {
result.append(f)
}
expectEqual([ 1.0, 1.5 ], result)
}
do {
var result = [CGFloat]()
for f in stride(from: (1.0 as CGFloat), through: 2.0, by: 0.5) {
result.append(f)
}
expectEqual([ 1.0, 1.5, 2.0 ], result)
}
}
CGFloatTestSuite.test("bridging") {
// Bridging to NSNumber.
do {
let flt: CGFloat = 4.125
// CGFloat -> NSNumber conversion.
let nsnum: NSNumber = flt as NSNumber
expectEqual("4.125", "\(nsnum)")
// NSNumber -> CGFloat
let bridgedBack: CGFloat = nsnum as! CGFloat
expectEqual(flt, bridgedBack)
}
// Array bridging.
do {
let originalArray: [CGFloat] = [ 4.125, 10.625 ]
// Array -> NSArray
let nsarr: NSArray = originalArray as NSArray
expectEqual(2, nsarr.count)
expectEqual("4.125", "\(nsarr[0])")
expectEqual("10.625", "\(nsarr[1])")
// NSArray -> Array
expectEqualSequence(originalArray, nsarr as! [CGFloat])
}
}
CGFloatTestSuite.test("varargs") {
let v: CVarArg = CGFloat(0)
expectEqual(
"0.023230", NSString(format: "%.6f", CGFloat(0.02323) as CVarArg))
expectEqual(
"0.123450", NSString(format: "%.6f", CGFloat(0.12345) as CVarArg))
expectEqual(
"1.234560", NSString(format: "%.6f", CGFloat(1.23456) as CVarArg))
}
runAllTests()