// RUN: %target-run-simple-swift // REQUIRES: executable_test // REQUIRES: objc_interop // UNSUPPORTED: OS=watchos import StdlibUnittest import Accelerate var AccelerateTests = TestSuite("Accelerate") if #available(iOS 10.0, OSX 10.12, tvOS 10.0, watchOS 4.0, *) { AccelerateTests.test("BNNS/ImageStackDescriptor") { var succeed = BNNSImageStackDescriptor(width: 0, height: 0, channels: 0, row_stride: 0, image_stride: 0, data_type: .int8) expectEqual(succeed.data_scale, 1) expectEqual(succeed.data_bias, 0) succeed = BNNSImageStackDescriptor(width: 0, height: 0, channels: 0, row_stride: 0, image_stride: 0, data_type: .int16, data_scale: 0.5, data_bias: 0.5) expectEqual(succeed.data_scale, 0.5) expectEqual(succeed.data_bias, 0.5) expectCrashLater() // indexed8 is not allowed as an imageStack data type. let _ = BNNSImageStackDescriptor(width: 0, height: 0, channels: 0, row_stride: 0, image_stride: 0, data_type: .indexed8) } AccelerateTests.test("BNNS/VectorDescriptor") { var succeed = BNNSVectorDescriptor(size: 0, data_type: .int8) expectEqual(succeed.data_scale, 1) expectEqual(succeed.data_bias, 0) succeed = BNNSVectorDescriptor(size: 0, data_type: .int8, data_scale: 0.5, data_bias: 0.5) expectEqual(succeed.data_scale, 0.5) expectEqual(succeed.data_bias, 0.5) expectCrashLater() // indexed8 is not allowed as a vector data type. let _ = BNNSVectorDescriptor(size: 0, data_type: .indexed8) } AccelerateTests.test("BNNS/LayerData") { // The zero layer should have data == nil. expectEqual(BNNSLayerData.zero.data, nil) var succeed = BNNSLayerData(data: nil, data_type: .int8) expectEqual(succeed.data_scale, 1) expectEqual(succeed.data_bias, 0) succeed = BNNSLayerData(data: nil, data_type: .int8, data_scale: 0.5, data_bias: 0.5, data_table: nil) expectEqual(succeed.data_scale, 0.5) expectEqual(succeed.data_bias, 0.5) var table: [Float] = [1.0] succeed = BNNSLayerData.indexed8(data: nil, data_table: &table) expectCrashLater() // indexed8 requires a non-nil data table. let _ = BNNSLayerData(data: nil, data_type: .indexed8) } AccelerateTests.test("BNNS/Activation") { expectEqual(BNNSActivation.identity.function, .identity) let id = BNNSActivation(function: .identity) expectTrue(id.alpha.isNaN) expectTrue(id.beta.isNaN) } } runAllTests()