[Feature] Some basic core feature #1
37
Sources/Core/Extensions/Bool+Init.swift
Normal file
37
Sources/Core/Extensions/Bool+Init.swift
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// Bool+Init.swift
|
||||
// Core
|
||||
//
|
||||
// Created by Javier Cicchelli on 15/04/2023.
|
||||
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
||||
//
|
||||
|
||||
public extension Bool {
|
||||
|
||||
// MARK: Initialisers
|
||||
|
||||
/// Initialise a boolean primitive out of a given string.
|
||||
/// - Parameter string: A string to initialise the boolean with.
|
||||
init(_ string: String) {
|
||||
let strings: [String] = [
|
||||
.Constants.oneNumber,
|
||||
.Constants.oneWord,
|
||||
.Constants.true,
|
||||
.Constants.yes
|
||||
]
|
||||
|
||||
self = strings.contains(string.lowercased())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - String+Constants
|
||||
|
||||
private extension String {
|
||||
enum Constants {
|
||||
static let yes = "yes"
|
||||
static let `true` = "true"
|
||||
static let oneWord = "one"
|
||||
static let oneNumber = "1"
|
||||
}
|
||||
}
|
60
Tests/Core/Extensions/Bool+InitTests.swift
Normal file
60
Tests/Core/Extensions/Bool+InitTests.swift
Normal file
@ -0,0 +1,60 @@
|
||||
//
|
||||
// Bool+InitTests.swift
|
||||
// Core
|
||||
//
|
||||
// Created by Javier Cicchelli on 15/04/2023.
|
||||
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
||||
//
|
||||
|
||||
import Core
|
||||
import XCTest
|
||||
|
||||
final class Bool_InitTests: XCTestCase {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
private var strings: [String] = []
|
||||
private var booleans: [Bool] = []
|
||||
|
||||
// MARK: Tests
|
||||
|
||||
func test_init_withPositiveStrings() {
|
||||
// GIVEN
|
||||
strings = ["YES", "Yes", "yes", "TRUE", "TrUe", "true", "One", "OnE", "one", "1"]
|
||||
|
||||
// WHEN
|
||||
booleans = strings.map(Bool.init)
|
||||
|
||||
// THEN
|
||||
booleans.forEach { boolean in
|
||||
XCTAssertTrue(boolean)
|
||||
}
|
||||
}
|
||||
|
||||
func test_init_withNegativeStrings() {
|
||||
// GIVEN
|
||||
strings = ["NO", "No", "no", "FALSE", "FaLsE", "false", "ZERO", "ZeRo", "zero", "0"]
|
||||
|
||||
// WHEN
|
||||
booleans = strings.map(Bool.init)
|
||||
|
||||
// THEN
|
||||
booleans.forEach { boolean in
|
||||
XCTAssertFalse(boolean)
|
||||
}
|
||||
}
|
||||
|
||||
func test_init_withOtherStrings() {
|
||||
// GIVEN
|
||||
strings = [.empty, "...", "something", "yes-", "false+", "X", "9"]
|
||||
|
||||
// WHEN
|
||||
booleans = strings.map(Bool.init)
|
||||
|
||||
// THEN
|
||||
booleans.forEach { boolean in
|
||||
XCTAssertFalse(boolean)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -6,10 +6,9 @@
|
||||
// Copyright © 2022 Röck+Cöde. All rights reserved.
|
||||
//
|
||||
|
||||
import Core
|
||||
import XCTest
|
||||
|
||||
@testable import Core
|
||||
|
||||
final class String_EmptyTests: XCTestCase {
|
||||
|
||||
// MARK: Tests
|
||||
|
Loading…
x
Reference in New Issue
Block a user