From 9e10865cb479a632fd053f45ea5e043a2418460c Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Sat, 6 May 2023 22:30:00 +0200 Subject: [PATCH 1/3] Implemented the "isNil" and "isNotNil" properties in the Optional+Nil extension. --- Sources/Core/Extensions/Optional+Nil.swift | 23 +++++++ .../Cases/Extensions/Optional+NilTests.swift | 66 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 Sources/Core/Extensions/Optional+Nil.swift create mode 100644 Tests/Core/Cases/Extensions/Optional+NilTests.swift 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) + } + +} -- 2.47.1 From 118dc911ffc3e1968ae4b53c60eb7c6fa23d5261 Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Sat, 6 May 2023 22:36:17 +0200 Subject: [PATCH 2/3] Updated documentation for the "gmt" property in the TimeZone+Zone extension and added test case scenario. --- Sources/Core/Extensions/TimeZone+Zone.swift | 2 +- .../Cases/Extensions/TimeZone+ZoneTests.swift | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 Tests/Core/Cases/Extensions/TimeZone+ZoneTests.swift diff --git a/Sources/Core/Extensions/TimeZone+Zone.swift b/Sources/Core/Extensions/TimeZone+Zone.swift index e7a524b..c9152c7 100644 --- a/Sources/Core/Extensions/TimeZone+Zone.swift +++ b/Sources/Core/Extensions/TimeZone+Zone.swift @@ -4,7 +4,7 @@ public extension TimeZone { // MARK: Zones - /// Greenwich Mean Time or UTC+0 + /// A time zone indicating it is Greenwich Mean Time or UTC+0 static let gmt = TimeZone(secondsFromGMT: 0) } diff --git a/Tests/Core/Cases/Extensions/TimeZone+ZoneTests.swift b/Tests/Core/Cases/Extensions/TimeZone+ZoneTests.swift new file mode 100644 index 0000000..0bfcd34 --- /dev/null +++ b/Tests/Core/Cases/Extensions/TimeZone+ZoneTests.swift @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// 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 TimeZone_ZoneTests: XCTestCase { + + // MARK: Properties + + private var timeZone: TimeZone! + + // MARK: Tests + + func test_gmt() { + // GIVEN + // WHEN + timeZone = .gmt + + // THEN + XCTAssertEqual(timeZone.identifier, "GMT") + XCTAssertEqual(timeZone.secondsFromGMT(), 0) + } + +} -- 2.47.1 From 61a49da3efb0a422324551ca419544b53a9de093 Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Sat, 6 May 2023 23:09:43 +0200 Subject: [PATCH 3/3] Improved the implementation of the "isNotEmpty" property in the String+Empty extension. --- Sources/Core/Extensions/String+Empty.swift | 15 ++++++--------- .../Core/Cases/Extensions/String+EmptyTests.swift | 4 ++-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Sources/Core/Extensions/String+Empty.swift b/Sources/Core/Extensions/String+Empty.swift index b3a599a..12636f2 100644 --- a/Sources/Core/Extensions/String+Empty.swift +++ b/Sources/Core/Extensions/String+Empty.swift @@ -12,17 +12,14 @@ public extension String { - // MARK: Properties + // MARK: Constants - /// Represents an empty string. + /// A string that represents an empty string. static let empty = "" - // MARK: Functions - - /// Checks whether a string is not empty. - /// - Returns: A boolean value that represents whether the string is not empty. - func isNotEmpty() -> Bool { - isEmpty == false - } + // MARK: Properties + + /// A Boolean value indicating whether a string is not empty. + var isNotEmpty: Bool { !isEmpty } } diff --git a/Tests/Core/Cases/Extensions/String+EmptyTests.swift b/Tests/Core/Cases/Extensions/String+EmptyTests.swift index 956abf0..23a204f 100644 --- a/Tests/Core/Cases/Extensions/String+EmptyTests.swift +++ b/Tests/Core/Cases/Extensions/String+EmptyTests.swift @@ -31,7 +31,7 @@ final class String_EmptyTests: XCTestCase { let string = String.empty // WHEN - let result = string.isNotEmpty() + let result = string.isNotEmpty // THEN XCTAssertFalse(result) @@ -42,7 +42,7 @@ final class String_EmptyTests: XCTestCase { let string = String.Test.string // WHEN - let result = string.isNotEmpty() + let result = string.isNotEmpty // THEN XCTAssertTrue(result) -- 2.47.1