// RUN: %target-run-simple-swift // REQUIRES: executable_test // REQUIRES: objc_interop import StdlibUnittest import Foundation var DarwinBooleanAPI = TestSuite("DarwinBooleanAPI") DarwinBooleanAPI.test("init") { do { let nativeTrue = true let true1 = DarwinBoolean(nativeTrue) let true2: DarwinBoolean = true expectEqual(1, unsafeBitCast(true1, to: UInt8.self)) expectEqual(1, unsafeBitCast(true2, to: UInt8.self)) } do { let nativeFalse = false let false1 = DarwinBoolean(nativeFalse) let false2: DarwinBoolean = false expectEqual(0, unsafeBitCast(false1, to: UInt8.self)) expectEqual(0, unsafeBitCast(false2, to: UInt8.self)) } } DarwinBooleanAPI.test("boolValue") { do { let nativeTrue = true let trueValue: DarwinBoolean = true expectEqual(nativeTrue, trueValue.boolValue) } do { let nativeFalse = false let falseValue: DarwinBoolean = false expectEqual(nativeFalse, falseValue.boolValue) } } DarwinBooleanAPI.test("boolValue/extra values") { let rawValue: UInt8 = 2 let otherValue = unsafeBitCast(rawValue, to: DarwinBoolean.self) expectTrue(otherValue.boolValue) } DarwinBooleanAPI.test("Boolean") { var trueValue: DarwinBoolean = true var success = false if trueValue.boolValue { success = true } else { expectUnreachable() } expectTrue(success) } DarwinBooleanAPI.test("CustomStringConvertible") { let trueValue: DarwinBoolean = true expectEqual("true", trueValue.description) let falseValue: DarwinBoolean = false expectEqual("false", falseValue.description) } DarwinBooleanAPI.test("Equatable") { let trueValue: DarwinBoolean = true let falseValue: DarwinBoolean = false checkEquatable(true, trueValue, trueValue) checkEquatable(true, falseValue, falseValue) checkEquatable(false, trueValue, falseValue) checkEquatable(false, falseValue, trueValue) } DarwinBooleanAPI.test("Equatable/extra values") { let trueValue: DarwinBoolean = true let falseValue: DarwinBoolean = false let rawValue: UInt8 = 2 let otherValue = unsafeBitCast(rawValue, to: DarwinBoolean.self) checkEquatable(true, trueValue, otherValue) checkEquatable(false, falseValue, otherValue) } DarwinBooleanAPI.test("&&") { let trueValue: DarwinBoolean = true let falseValue: DarwinBoolean = false expectTrue(trueValue.boolValue && trueValue.boolValue) expectFalse(trueValue.boolValue && falseValue.boolValue) expectFalse(falseValue.boolValue && trueValue.boolValue) expectFalse(falseValue.boolValue && falseValue.boolValue) } DarwinBooleanAPI.test("||") { let trueValue: DarwinBoolean = true let falseValue: DarwinBoolean = false expectTrue(trueValue.boolValue || trueValue.boolValue) expectTrue(trueValue.boolValue || falseValue.boolValue) expectTrue(falseValue.boolValue || trueValue.boolValue) expectFalse(falseValue.boolValue || falseValue.boolValue) } var DarwinIoctlConstants = TestSuite("DarwinIoctlConstants") DarwinIoctlConstants.test("tty ioctl constants availability") { let aConstant = TIOCGWINSZ } runAllTests()