// RUN: rm -rf %t && mkdir %t // RUN: %target-build-swift -swift-version 3 %s -o %t/a.out // RUN: %target-run %t/a.out // REQUIRES: objc_interop // REQUIRES: executable_test // CoreMedia is not present on watchOS. // UNSUPPORTED: OS=watchos import CoreMedia import AVFoundation import StdlibUnittest import StdlibUnittestFoundationExtras var coreMedia = TestSuite("CoreMedia") func equalCMTimeMappings(_ x: CMTimeMapping, _ y: CMTimeMapping) -> Bool { var xx = x, yy = y return memcmp(&xx, &yy, MemoryLayout.size) == 0 } coreMedia.test("NSValue bridging") { let time1 = CMTimeMake(181, 60) expectBridgeToNSValue(time1, nsValueInitializer: { NSValue(time: $0) }, nsValueGetter: { $0.timeValue }, equal: (==)) let time2 = CMTimeMake(242, 60) let timeRange1 = CMTimeRangeFromTimeToTime(time1, time2) expectBridgeToNSValue(timeRange1, nsValueInitializer: { NSValue(timeRange: $0) }, nsValueGetter: { $0.timeRangeValue }, equal: (==)) let time3 = CMTimeMake(303, 60) let timeRange2 = CMTimeRangeFromTimeToTime(time2, time3) let timeMapping = CMTimeMapping(source: timeRange1, target: timeRange2) expectBridgeToNSValue(timeMapping, nsValueInitializer: { NSValue(timeMapping: $0) }, nsValueGetter: { $0.timeMappingValue }, equal: equalCMTimeMappings) } var AVFoundationTests = TestSuite("AVFoundation_Swift3") let boxedPixelFormat = NSNumber(value: kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) #if os(macOS) || os(iOS) if #available(iOS 5, *) { AVFoundationTests.test("AVCaptureVideoDataOutput.availableVideoCVPixelFormatTypes") { func f(v: AVCaptureVideoDataOutput) -> Bool { return v.availableVideoCVPixelFormatTypes.contains(where: { e in if let e = e as? NSNumber, e == boxedPixelFormat { return true } else { return false } }) } } } #endif #if os(iOS) if #available(iOS 7, *) { AVFoundationTests.test("AVMetadataMachineReadableCodeObject.corners") { func f(m: AVMetadataMachineReadableCodeObject) -> [Any]! { return m.corners } } } if #available(iOS 10, *) { AVFoundationTests.test("AVCaptureDeviceFormat.supportedColorSpaces") { func f(df: AVCaptureDeviceFormat) -> Bool { return df.supportedColorSpaces.contains(NSNumber(value: AVCaptureColorSpace.sRGB.rawValue)) } } AVFoundationTests.test("AVCapturePhotoOutput.supportedFlashModes") { func f(p: AVCapturePhotoOutput) -> Bool { return p.supportedFlashModes.contains(NSNumber(value: AVCaptureFlashMode.off.rawValue)) } } AVFoundationTests.test("AVCapturePhotoOutput.availablePhotoPixelFormatTypes") { func f(p: AVCapturePhotoOutput) -> Bool { return p.availablePhotoPixelFormatTypes.contains(boxedPixelFormat) } } AVFoundationTests.test("AVCapturePhotoOutput.availableRawPhotoPixelFormatTypes") { func f(p: AVCapturePhotoOutput) -> Bool { return p.availableRawPhotoPixelFormatTypes.contains(boxedPixelFormat) } } AVFoundationTests.test("AVCapturePhotoSettings.availablePreviewPhotoPixelFormatTypes") { func f(p: AVCapturePhotoSettings) -> Bool { return p.availablePreviewPhotoPixelFormatTypes.contains(boxedPixelFormat) } } } if #available(iOS 11, *) { AVFoundationTests.test("AVCaptureSynchronizedDataCollection/iteration") { func f(c: AVCaptureSynchronizedDataCollection) { for element in c { var element = element expectType(AVCaptureSynchronizedData.self, &element) } } } } #endif runAllTests()