Files
swift-mirror/test/1_stdlib/SceneKit.swift
Erik Eckstein adef0368bb tests: add import statements to workaround linker errors in all relevant tests.
This is needed if we compile StdlibUnittest with -sil-serialize-all
So far I added the imports only in files which needed them. But this may change, depending on the optimizer (inlining).
Adding them in all files doesn't harm and avoids confusion if someone makes an unrelated change which would result in such a linker error.
2016-01-21 09:59:50 -08:00

224 lines
6.7 KiB
Swift

// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// REQUIRES: objc_interop
// UNSUPPORTED: OS=watchos
import StdlibUnittest
// 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.
import SwiftPrivate
#if _runtime(_ObjC)
import ObjectiveC
#endif
import SceneKit
// SceneKit is only available on iOS 8.0 and above and on OS X 10.8 and above.
// That said SCNMatrix4Scale &co are only available on OS X 10.10 and above.
var SceneKitTests = TestSuite("SceneKit")
if #available(iOS 8.0, OSX 10.10, *) {
let scn_vec3_ref = SCNVector3Make(1, 2, 3)
let scn_vec4_ref = SCNVector4Make(1, 2, 3, 4)
let scn_mat4_ref = SCNMatrix4Scale(SCNMatrix4Translate(SCNMatrix4MakeRotation(SCNFloat(M_PI), 1, 0, 0), 1, 2, 3), 10, 20, 30)
// MARK: Exposing SCNFloat
SceneKitTests.test("SCNFloat") {
let f = Float(1.0)
let scn_float_from_f = SCNFloat(f)
expectEqual(scn_float_from_f, 1.0)
let d = Double(2.0)
let scn_float_from_d = SCNFloat(d)
expectEqual(scn_float_from_d, 2.0)
let cg = CGFloat(3.0)
let scn_float_from_cg = SCNFloat(cg)
expectEqual(scn_float_from_cg, 3.0)
let node = SCNNode()
node.position.x = scn_float_from_f
node.position.y = scn_float_from_d
node.position.z = scn_float_from_cg
expectTrue(SCNVector3EqualToVector3(node.position, scn_vec3_ref))
let f1: SCNFloat = scn_vec3_ref.x
let f2: SCNFloat = scn_vec4_ref.y
expectEqual(f1, 1.0);
expectEqual(f2, 2.0);
}
// MARK: Working with SCNVector3
SceneKitTests.test("SCNVector3.init()/Literal") {
let scn_vec3_from_lit = SCNVector3(1, 2, 3)
expectTrue(SCNVector3EqualToVector3(scn_vec3_from_lit, scn_vec3_ref))
}
SceneKitTests.test("SCNVector3.init()/Float") {
let f1: Float = 1.0
let f2: Float = 2.0
let f3: Float = 3.0
let scn_vec3_from_f = SCNVector3(f1, f2, f3)
expectTrue(SCNVector3EqualToVector3(scn_vec3_from_f, scn_vec3_ref))
}
SceneKitTests.test("SCNVector3.init()/CGFloat") {
let d1: CGFloat = 1.0
let d2: CGFloat = 2.0
let d3: CGFloat = 3.0
let scn_vec3_from_cg = SCNVector3(d1, d2, d3)
expectTrue(SCNVector3EqualToVector3(scn_vec3_from_cg, scn_vec3_ref))
}
SceneKitTests.test("SCNVector3.init()/Double") {
let d1: Double = 1.0
let d2: Double = 2.0
let d3: Double = 3.0
let scn_vec3_from_d = SCNVector3(d1, d2, d3)
expectTrue(SCNVector3EqualToVector3(scn_vec3_from_d, scn_vec3_ref))
}
SceneKitTests.test("SCNVector3.init()/Int") {
let i1: Int = 1
let i2: Int = 2
let i3: Int = 3
let scn_vec3_from_i = SCNVector3(i1, i2, i3)
expectTrue(SCNVector3EqualToVector3(scn_vec3_from_i, scn_vec3_ref))
}
SceneKitTests.test("SCNVector3.init()/float3") {
let v3 = float3(1, 2, 3)
let scn_vec3_from_float3 = SCNVector3(v3)
expectTrue(SCNVector3EqualToVector3(scn_vec3_from_float3, scn_vec3_ref))
}
SceneKitTests.test("SCNVector3.init()/double3") {
let v3 = double3(1, 2, 3)
let scn_vec3_from_double3 = SCNVector3(v3)
expectTrue(SCNVector3EqualToVector3(scn_vec3_from_double3, scn_vec3_ref))
}
SceneKitTests.test("SCNVector3.init()/mix") {
let f1: Float = 1.0
let d2: CGFloat = 2.0
let scn_vec3_from_mixed = SCNVector3(f1, Float(d2), 3)
expectTrue(SCNVector3EqualToVector3(scn_vec3_from_mixed, scn_vec3_ref))
}
SceneKitTests.test("float3.init()/SCNVector3") {
let v3 = float3(scn_vec3_ref)
expectEqual(v3.x, 1.0)
expectEqual(v3.y, 2.0)
expectEqual(v3.z, 3.0)
}
SceneKitTests.test("double3.init()/SCNVector3") {
let v3 = double3(scn_vec3_ref)
expectEqual(v3.x, 1.0)
expectEqual(v3.y, 2.0)
expectEqual(v3.z, 3.0)
}
// MARK: Working with SCNVector4
SceneKitTests.test("SCNVector4.init()/Literal") {
let scn_vec4_from_lit = SCNVector4(1, 2, 3, 4)
expectTrue(SCNVector4EqualToVector4(scn_vec4_from_lit, scn_vec4_ref))
}
SceneKitTests.test("SCNVector4.init()/Float") {
let f1: Float = 1.0
let f2: Float = 2.0
let f3: Float = 3.0
let f4: Float = 4.0
let scn_vec4_from_f = SCNVector4(f1, f2, f3, f4)
expectTrue(SCNVector4EqualToVector4(scn_vec4_from_f, scn_vec4_ref))
}
SceneKitTests.test("SCNVector4.init()/CGFloat") {
let d1: CGFloat = 1.0
let d2: CGFloat = 2.0
let d3: CGFloat = 3.0
let d4: CGFloat = 4.0
let scn_vec4_from_cg = SCNVector4(d1, d2, d3, d4)
expectTrue(SCNVector4EqualToVector4(scn_vec4_from_cg, scn_vec4_ref))
}
SceneKitTests.test("SCNVector4.init()/Double") {
let d1: Double = 1.0
let d2: Double = 2.0
let d3: Double = 3.0
let d4: Double = 4.0
let scn_vec4_from_d = SCNVector4(d1, d2, d3, d4)
expectTrue(SCNVector4EqualToVector4(scn_vec4_from_d, scn_vec4_ref))
}
SceneKitTests.test("SCNVector4.init()/Int") {
let i1: Int = 1
let i2: Int = 2
let i3: Int = 3
let i4: Int = 4
let scn_vec4_from_i = SCNVector4(i1, i2, i3, i4)
expectTrue(SCNVector4EqualToVector4(scn_vec4_from_i, scn_vec4_ref))
}
SceneKitTests.test("SCNVector4.init()/float4") {
let v4 = float4(1, 2, 3, 4)
let scn_vec4_from_float4 = SCNVector4(v4)
expectTrue(SCNVector4EqualToVector4(scn_vec4_from_float4, scn_vec4_ref))
}
SceneKitTests.test("SCNVector4.init()/double4") {
let v4 = double4(1, 2, 3, 4)
let scn_vec4_from_double4 = SCNVector4(v4)
expectTrue(SCNVector4EqualToVector4(scn_vec4_from_double4, scn_vec4_ref))
}
SceneKitTests.test("SCNVector4.init()/mix") {
let f1: Float = 1.0
let d2: CGFloat = 2.0
let f4: Float = 4.0
let scn_vec4_from_mixed = SCNVector4(f1, Float(d2), 3, f4)
expectTrue(SCNVector4EqualToVector4(scn_vec4_from_mixed, scn_vec4_ref))
}
SceneKitTests.test("float4.init()/SCNVector4") {
let v4 = float4(scn_vec4_ref)
expectEqual(v4.x, 1.0)
expectEqual(v4.y, 2.0)
expectEqual(v4.z, 3.0)
expectEqual(v4.w, 4.0)
}
SceneKitTests.test("double4.init()/SCNVector4") {
let v4 = double4(scn_vec4_ref)
expectEqual(v4.x, 1.0)
expectEqual(v4.y, 2.0)
expectEqual(v4.z, 3.0)
expectEqual(v4.w, 4.0)
}
// MARK: Working with SCNMatrix4
SceneKitTests.test("SCNMatrix4.init()/float4x4 + float4x4.init()/SCNMatrix4") {
let mat4_from_scn_mat4 = float4x4(scn_mat4_ref)
let scn_vec4_from_mat4 = SCNMatrix4(mat4_from_scn_mat4)
expectTrue(SCNMatrix4EqualToMatrix4(scn_vec4_from_mat4, scn_mat4_ref))
}
SceneKitTests.test("SCNMatrix4.init()/double4x4 + double4x4.init()/SCNMatrix4") {
let mat4_from_scn_mat4 = double4x4(scn_mat4_ref)
let scn_vec4_from_mat4 = SCNMatrix4(mat4_from_scn_mat4)
expectTrue(SCNMatrix4EqualToMatrix4(scn_vec4_from_mat4, scn_mat4_ref))
}
}
runAllTests()