diff --git a/Sources/Core/Extensions/Optional+Nil.swift b/Sources/Core/Extensions/Optional+Nil.swift new file mode 100644 index 0000000..b7f345b --- /dev/null +++ b/Sources/Core/Extensions/Optional+Nil.swift @@ -0,0 +1,23 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the SwiftLibs open source project +// +// Copyright (c) 2023 Röck+Cöde VoF. and the SwiftLibs project authors +// Licensed under the EUPL 1.2 or later. +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of SwiftLibs project authors +// +//===----------------------------------------------------------------------===// + +public extension Optional { + + // MARK: Properties + + /// A Boolean value indicating whether an optional has not been set. + var isNil: Bool { self == nil } + + /// A Boolean value indicating whether an optional has been set. + var isNotNil: Bool { !isNil } + +} diff --git a/Tests/Core/Cases/Extensions/Optional+NilTests.swift b/Tests/Core/Cases/Extensions/Optional+NilTests.swift new file mode 100644 index 0000000..5a9bcc1 --- /dev/null +++ b/Tests/Core/Cases/Extensions/Optional+NilTests.swift @@ -0,0 +1,66 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the SwiftLibs open source project +// +// Copyright (c) 2023 Röck+Cöde VoF. and the SwiftLibs project authors +// Licensed under the EUPL 1.2 or later. +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of SwiftLibs project authors +// +//===----------------------------------------------------------------------===// + +import Core +import XCTest + +final class Optional_NilTests: XCTestCase { + + // MARK: Properties + + private var optional: Int? + + private var result: Bool! + + // MARK: Tests + + func test_isNil_whenOptionalHasNotBeenSet() { + // GIVEN + // WHEN + result = optional.isNil + + // THEN + XCTAssertTrue(result) + } + + func test_isNil_whenOptionalHasBeenSet() { + // GIVEN + optional = 0 + + // WHEN + result = optional.isNil + + // THEN + XCTAssertFalse(result) + } + + func test_isNotNil_whenOptionalHasNotBeenSet() { + // GIVEN + // WHEN + result = optional.isNotNil + + // THEN + XCTAssertFalse(result) + } + + func test_isNotNil_whenOptionalHasBeenSet() { + // GIVEN + optional = 0 + + // WHEN + result = optional.isNotNil + + // THEN + XCTAssertTrue(result) + } + +}