// 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 CoreMedia var CMTimeTests = TestSuite("CMTime") let t1 = CMTimeMake(1, 10) let t2 = CMTimeMake(2, 10) CMTimeTests.test("isValid") { expectFalse(kCMTimeInvalid.isValid) expectTrue(t1.isValid) } CMTimeTests.test("isPositiveInfinity") { expectTrue(kCMTimePositiveInfinity.isPositiveInfinity) expectFalse(t1.isPositiveInfinity) } CMTimeTests.test("isNegativeInfinity") { expectTrue(kCMTimeNegativeInfinity.isNegativeInfinity) expectFalse(t1.isNegativeInfinity) } CMTimeTests.test("isIndefinite") { expectTrue(kCMTimeIndefinite.isIndefinite) expectFalse(t1.isIndefinite) } CMTimeTests.test("isNumeric") { expectFalse(kCMTimeInvalid.isNumeric) expectFalse(kCMTimePositiveInfinity.isNumeric) expectFalse(kCMTimeNegativeInfinity.isNumeric) expectFalse(kCMTimeIndefinite.isNumeric) expectTrue(t1.isNumeric) expectFalse(t1.hasBeenRounded) expectEqual(0.1, t1.seconds) t1.convertScale(100, method: CMTimeRoundingMethod.`default`) var t1a = t1.convertScale(11, method: CMTimeRoundingMethod.`default`) expectTrue(t1a.hasBeenRounded) } CMTimeTests.test("operators") { expectEqual(CMTimeMake(3, 10), t1 + t2) expectEqual(CMTimeMake(1, 10), t2 - t1) expectFalse(t1 < kCMTimeZero) expectFalse(t1 == kCMTimeZero) expectTrue(t1 > kCMTimeZero) expectFalse(t1 <= kCMTimeZero) expectTrue(t1 >= kCMTimeZero) expectTrue(t1 != kCMTimeZero) } let r1 = CMTimeRangeMake(kCMTimeZero, CMTimeMake(1, 1)) let r2 = CMTimeRangeMake(kCMTimeZero, kCMTimeZero) let r3 = CMTimeRangeMake(CMTimeMake(1, 1), CMTimeMake(3, 2)) var CMTimeRangeTests = TestSuite("CMTimeRange") CMTimeRangeTests.test("isValid") { expectTrue(r1.isValid) expectTrue(r2.isValid) expectTrue(r3.isValid) expectFalse(kCMTimeRangeInvalid.isValid) } CMTimeRangeTests.test("isIndefinite") { expectFalse(r1.isIndefinite) expectFalse(r2.isIndefinite) expectFalse(r3.isIndefinite) } CMTimeRangeTests.test("isEmpty") { expectFalse(r1.isEmpty) expectTrue(r2.isEmpty) expectFalse(r3.isEmpty) } CMTimeRangeTests.test("start/end") { expectEqual(CMTimeMake(1, 1), r3.start) expectEqual(CMTimeMake(5, 2), r3.end) } CMTimeRangeTests.test("union") { expectEqual(r1, r1.union(r2)) expectEqual(r2, r2.union(r2)) expectNotEqual(r3, r2.union(r3)) } CMTimeRangeTests.test("intersection") { expectEqual(r2, r1.intersection(r2)) expectEqual(r2, r1.intersection(r3)) } CMTimeRangeTests.test("contains") { expectTrue(r1.containsTimeRange(r2)) expectFalse(r2.containsTimeRange(r2)) expectFalse(r2.containsTimeRange(r1)) expectFalse(r3.containsTime(kCMTimeZero)) } CMTimeRangeTests.test("operators") { expectFalse(r1 == r2) expectTrue(r1 != r2) } runAllTests()