mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This follows the API guidelines and is consistent with the printed form. 'quietNaN' does not change, though.
210 lines
9.0 KiB
Swift
210 lines
9.0 KiB
Swift
// RUN: rm -rf %t && mkdir %t
|
|
// RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -emit-module -emit-module-path %t/PrintTestTypes.swiftmodule -o %t/PrintTestTypes.o %S/Inputs/PrintTestTypes.swift
|
|
// RUN: %target-build-swift %s -Xlinker %t/PrintTestTypes.o -I %t -L %t -o %t/main.out
|
|
// RUN: %target-run %t/main.out
|
|
// RUN: %target-run %t/main.out --locale ru_RU.UTF-8
|
|
// REQUIRES: executable_test
|
|
// XFAIL: linux
|
|
|
|
import StdlibUnittest
|
|
import Darwin
|
|
import PrintTestTypes
|
|
|
|
// Also import modules which are used by StdlibUnittest internally. This
|
|
// workaround is needed to link all required libraries in case we compile
|
|
// StdlibUnittest with -sil-serialize-all.
|
|
#if _runtime(_ObjC)
|
|
import ObjectiveC
|
|
#endif
|
|
|
|
let PrintTests = TestSuite("PrintFloat")
|
|
|
|
PrintTests.setUp {
|
|
if let localeArgIndex = Process.arguments.index(of: "--locale") {
|
|
let locale = Process.arguments[localeArgIndex + 1]
|
|
expectEqual("ru_RU.UTF-8", locale)
|
|
setlocale(LC_ALL, locale)
|
|
} else {
|
|
setlocale(LC_ALL, "")
|
|
}
|
|
}
|
|
|
|
PrintTests.test("CustomStringConvertible") {
|
|
func hasDescription(any: Any) {
|
|
expectTrue(any is CustomStringConvertible)
|
|
}
|
|
|
|
hasDescription(CFloat(1.0))
|
|
hasDescription(CDouble(1.0))
|
|
}
|
|
|
|
PrintTests.test("Printable") {
|
|
func asFloat32(f: Float32) -> Float32 { return f }
|
|
func asFloat64(f: Float64) -> Float64 { return f }
|
|
#if arch(i386) || arch(x86_64)
|
|
func asFloat80(f: Swift.Float80) -> Swift.Float80 { return f }
|
|
#endif
|
|
|
|
expectPrinted("1.0", Float(1.0))
|
|
expectPrinted("-1.0", Float(-1.0))
|
|
expectPrinted("1.0", Double(1.0))
|
|
expectPrinted("-1.0", Double(-1.0))
|
|
|
|
expectPrinted("1.0", CFloat(1.0))
|
|
expectPrinted("-1.0", CFloat(-1.0))
|
|
expectPrinted("1.0", CDouble(1.0))
|
|
expectPrinted("-1.0", CDouble(-1.0))
|
|
|
|
expectPrinted("inf", Float.infinity)
|
|
expectPrinted("-inf", -Float.infinity)
|
|
expectPrinted("nan", Float.nan)
|
|
expectPrinted("0.0", asFloat32(0.0))
|
|
expectPrinted("1.0", asFloat32(1.0))
|
|
expectPrinted("-1.0", asFloat32(-1.0))
|
|
expectPrinted("100.125", asFloat32(100.125))
|
|
expectPrinted("-100.125", asFloat32(-100.125))
|
|
|
|
expectPrinted("inf", Double.infinity)
|
|
expectPrinted("-inf", -Double.infinity)
|
|
expectPrinted("nan", Double.nan)
|
|
expectPrinted("0.0", asFloat64(0.0))
|
|
expectPrinted("1.0", asFloat64(1.0))
|
|
expectPrinted("-1.0", asFloat64(-1.0))
|
|
expectPrinted("100.125", asFloat64(100.125))
|
|
expectPrinted("-100.125", asFloat64(-100.125))
|
|
|
|
expectPrinted("1.00001", asFloat32(1.00001))
|
|
expectPrinted("1.25e+17", asFloat32(125000000000000000.0))
|
|
expectPrinted("1.25e+16", asFloat32(12500000000000000.0))
|
|
expectPrinted("1.25e+15", asFloat32(1250000000000000.0))
|
|
expectPrinted("1.25e+14", asFloat32(125000000000000.0))
|
|
expectPrinted("1.25e+13", asFloat32(12500000000000.0))
|
|
expectPrinted("1.25e+12", asFloat32(1250000000000.0))
|
|
expectPrinted("1.25e+11", asFloat32(125000000000.0))
|
|
expectPrinted("1.25e+10", asFloat32(12500000000.0))
|
|
expectPrinted("1.25e+09", asFloat32(1250000000.0))
|
|
expectPrinted("1.25e+08", asFloat32(125000000.0))
|
|
expectPrinted("1.25e+07", asFloat32(12500000.0))
|
|
expectPrinted("1.25e+06", asFloat32(1250000.0))
|
|
expectPrinted("125000.0", asFloat32(125000.0))
|
|
expectPrinted("12500.0", asFloat32(12500.0))
|
|
expectPrinted("1250.0", asFloat32(1250.0))
|
|
expectPrinted("125.0", asFloat32(125.0))
|
|
expectPrinted("12.5", asFloat32(12.5))
|
|
expectPrinted("1.25", asFloat32(1.25))
|
|
expectPrinted("0.125", asFloat32(0.125))
|
|
expectPrinted("0.0125", asFloat32(0.0125))
|
|
expectPrinted("0.00125", asFloat32(0.00125))
|
|
expectPrinted("0.000125", asFloat32(0.000125))
|
|
expectPrinted("1.25e-05", asFloat32(0.0000125))
|
|
expectPrinted("1.25e-06", asFloat32(0.00000125))
|
|
expectPrinted("1.25e-07", asFloat32(0.000000125))
|
|
expectPrinted("1.25e-08", asFloat32(0.0000000125))
|
|
expectPrinted("1.25e-09", asFloat32(0.00000000125))
|
|
expectPrinted("1.25e-10", asFloat32(0.000000000125))
|
|
expectPrinted("1.25e-11", asFloat32(0.0000000000125))
|
|
expectPrinted("1.25e-12", asFloat32(0.00000000000125))
|
|
expectPrinted("1.25e-13", asFloat32(0.000000000000125))
|
|
expectPrinted("1.25e-14", asFloat32(0.0000000000000125))
|
|
expectPrinted("1.25e-15", asFloat32(0.00000000000000125))
|
|
expectPrinted("1.25e-16", asFloat32(0.000000000000000125))
|
|
expectPrinted("1.25e-17", asFloat32(0.0000000000000000125))
|
|
|
|
expectPrinted("1.00000000000001", asFloat64(1.00000000000001))
|
|
expectPrinted("1.25e+17", asFloat64(125000000000000000.0))
|
|
expectPrinted("1.25e+16", asFloat64(12500000000000000.0))
|
|
expectPrinted("1.25e+15", asFloat64(1250000000000000.0))
|
|
expectPrinted("125000000000000.0", asFloat64(125000000000000.0))
|
|
expectPrinted("12500000000000.0", asFloat64(12500000000000.0))
|
|
expectPrinted("1250000000000.0", asFloat64(1250000000000.0))
|
|
expectPrinted("125000000000.0", asFloat64(125000000000.0))
|
|
expectPrinted("12500000000.0", asFloat64(12500000000.0))
|
|
expectPrinted("1250000000.0", asFloat64(1250000000.0))
|
|
expectPrinted("125000000.0", asFloat64(125000000.0))
|
|
expectPrinted("12500000.0", asFloat64(12500000.0))
|
|
expectPrinted("1250000.0", asFloat64(1250000.0))
|
|
expectPrinted("125000.0", asFloat64(125000.0))
|
|
expectPrinted("12500.0", asFloat64(12500.0))
|
|
expectPrinted("1250.0", asFloat64(1250.0))
|
|
expectPrinted("125.0", asFloat64(125.0))
|
|
expectPrinted("12.5", asFloat64(12.5))
|
|
expectPrinted("1.25", asFloat64(1.25))
|
|
expectPrinted("0.125", asFloat64(0.125))
|
|
expectPrinted("0.0125", asFloat64(0.0125))
|
|
expectPrinted("0.00125", asFloat64(0.00125))
|
|
expectPrinted("0.000125", asFloat64(0.000125))
|
|
expectPrinted("1.25e-05", asFloat64(0.0000125))
|
|
expectPrinted("1.25e-06", asFloat64(0.00000125))
|
|
expectPrinted("1.25e-07", asFloat64(0.000000125))
|
|
expectPrinted("1.25e-08", asFloat64(0.0000000125))
|
|
expectPrinted("1.25e-09", asFloat64(0.00000000125))
|
|
expectPrinted("1.25e-10", asFloat64(0.000000000125))
|
|
expectPrinted("1.25e-11", asFloat64(0.0000000000125))
|
|
expectPrinted("1.25e-12", asFloat64(0.00000000000125))
|
|
expectPrinted("1.25e-13", asFloat64(0.000000000000125))
|
|
expectPrinted("1.25e-14", asFloat64(0.0000000000000125))
|
|
expectPrinted("1.25e-15", asFloat64(0.00000000000000125))
|
|
expectPrinted("1.25e-16", asFloat64(0.000000000000000125))
|
|
expectPrinted("1.25e-17", asFloat64(0.0000000000000000125))
|
|
|
|
#if arch(i386) || arch(x86_64)
|
|
expectPrinted("1.00000000000000001", asFloat80(1.00000000000000001))
|
|
expectPrinted("1.25e+19", asFloat80(12500000000000000000.0))
|
|
expectPrinted("1.25e+18", asFloat80(1250000000000000000.0))
|
|
expectPrinted("125000000000000000.0", asFloat80(125000000000000000.0))
|
|
expectPrinted("12500000000000000.0", asFloat80(12500000000000000.0))
|
|
expectPrinted("1250000000000000.0", asFloat80(1250000000000000.0))
|
|
expectPrinted("125000000000000.0", asFloat80(125000000000000.0))
|
|
expectPrinted("12500000000000.0", asFloat80(12500000000000.0))
|
|
expectPrinted("1250000000000.0", asFloat80(1250000000000.0))
|
|
expectPrinted("125000000000.0", asFloat80(125000000000.0))
|
|
expectPrinted("12500000000.0", asFloat80(12500000000.0))
|
|
expectPrinted("1250000000.0", asFloat80(1250000000.0))
|
|
expectPrinted("125000000.0", asFloat80(125000000.0))
|
|
expectPrinted("12500000.0", asFloat80(12500000.0))
|
|
expectPrinted("1250000.0", asFloat80(1250000.0))
|
|
expectPrinted("125000.0", asFloat80(125000.0))
|
|
expectPrinted("12500.0", asFloat80(12500.0))
|
|
expectPrinted("1250.0", asFloat80(1250.0))
|
|
expectPrinted("125.0", asFloat80(125.0))
|
|
expectPrinted("12.5", asFloat80(12.5))
|
|
expectPrinted("1.25", asFloat80(1.25))
|
|
expectPrinted("0.125", asFloat80(0.125))
|
|
expectPrinted("0.0125", asFloat80(0.0125))
|
|
expectPrinted("0.00125", asFloat80(0.00125))
|
|
expectPrinted("0.000125", asFloat80(0.000125))
|
|
expectPrinted("1.25e-05", asFloat80(0.0000125))
|
|
expectPrinted("1.25e-06", asFloat80(0.00000125))
|
|
expectPrinted("1.25e-07", asFloat80(0.000000125))
|
|
expectPrinted("1.25e-08", asFloat80(0.0000000125))
|
|
expectPrinted("1.25e-09", asFloat80(0.00000000125))
|
|
expectPrinted("1.25e-10", asFloat80(0.000000000125))
|
|
expectPrinted("1.25e-11", asFloat80(0.0000000000125))
|
|
expectPrinted("1.25e-12", asFloat80(0.00000000000125))
|
|
expectPrinted("1.25e-13", asFloat80(0.000000000000125))
|
|
expectPrinted("1.25e-14", asFloat80(0.0000000000000125))
|
|
expectPrinted("1.25e-15", asFloat80(0.00000000000000125))
|
|
expectPrinted("1.25e-16", asFloat80(0.000000000000000125))
|
|
expectPrinted("1.25e-17", asFloat80(0.0000000000000000125))
|
|
#endif
|
|
|
|
expectDebugPrinted("1.10000002", asFloat32(1.1))
|
|
expectDebugPrinted("1.24999998e+17", asFloat32(125000000000000000.0))
|
|
expectDebugPrinted("1.25", asFloat32(1.25))
|
|
expectDebugPrinted("1.24999997e-05", asFloat32(0.0000125))
|
|
|
|
expectDebugPrinted("1.1000000000000001", asFloat64(1.1))
|
|
expectDebugPrinted("1.25e+17", asFloat64(125000000000000000.0))
|
|
expectDebugPrinted("1.25", asFloat64(1.25))
|
|
expectDebugPrinted("1.2500000000000001e-05", asFloat64(0.0000125))
|
|
|
|
#if arch(i386) || arch(x86_64)
|
|
expectDebugPrinted("1.10000000000000000002", asFloat80(1.1))
|
|
expectDebugPrinted("125000000000000000.0", asFloat80(125000000000000000.0))
|
|
expectDebugPrinted("1.25", asFloat80(1.25))
|
|
expectDebugPrinted("1.25000000000000000001e-05", asFloat80(0.0000125))
|
|
#endif
|
|
}
|
|
|
|
runAllTests()
|