[Enhancement] Optional+Nil extension (#17)
This PR contains the work done to add some properties to the `Optional` primitives. In addition, some work has been done to improve some existing codebase as well. Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Reviewed-on: #17
This commit is contained in:
parent
2f3712c830
commit
ffb1170760
23
Sources/Core/Extensions/Optional+Nil.swift
Normal file
23
Sources/Core/Extensions/Optional+Nil.swift
Normal file
@ -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 }
|
||||
|
||||
}
|
@ -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 }
|
||||
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
}
|
||||
|
66
Tests/Core/Cases/Extensions/Optional+NilTests.swift
Normal file
66
Tests/Core/Cases/Extensions/Optional+NilTests.swift
Normal file
@ -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)
|
||||
}
|
||||
|
||||
}
|
@ -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)
|
||||
|
34
Tests/Core/Cases/Extensions/TimeZone+ZoneTests.swift
Normal file
34
Tests/Core/Cases/Extensions/TimeZone+ZoneTests.swift
Normal file
@ -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)
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user