[Feature] Some basic core feature #1
@ -8,22 +8,23 @@ let package = Package(
|
|||||||
.library(
|
.library(
|
||||||
name: "SwiftLibs",
|
name: "SwiftLibs",
|
||||||
targets: [
|
targets: [
|
||||||
"SwiftLibs"
|
"Core"
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
dependencies: [],
|
dependencies: [],
|
||||||
targets: [
|
targets: [
|
||||||
.target(
|
.target(
|
||||||
name: "SwiftLibs",
|
name: "Core",
|
||||||
dependencies: [
|
dependencies: [
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
.testTarget(
|
.testTarget(
|
||||||
name: "SwiftLibsTests",
|
name: "CoreTests",
|
||||||
dependencies: [
|
dependencies: [
|
||||||
"SwiftLibs"
|
"Core"
|
||||||
]
|
],
|
||||||
|
path: "Tests/Core"
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
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"
|
||||||
|
}
|
||||||
|
}
|
24
Sources/Core/Extensions/String+Empty.swift
Normal file
24
Sources/Core/Extensions/String+Empty.swift
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
//
|
||||||
|
// String+Empty.swift
|
||||||
|
// Core
|
||||||
|
//
|
||||||
|
// Created by Javier Cicchelli on 15/04/2023.
|
||||||
|
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
public extension String {
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// 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
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,6 +0,0 @@
|
|||||||
public struct SwiftLibs {
|
|
||||||
public private(set) var text = "Hello, World!"
|
|
||||||
|
|
||||||
public init() {
|
|
||||||
}
|
|
||||||
}
|
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
55
Tests/Core/Extensions/String+EmptyTests.swift
Normal file
55
Tests/Core/Extensions/String+EmptyTests.swift
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
//
|
||||||
|
// String+EmptyTests.swift
|
||||||
|
// Core
|
||||||
|
//
|
||||||
|
// Created by Javier Cicchelli on 15/04/2023.
|
||||||
|
// Copyright © 2022 Röck+Cöde. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Core
|
||||||
|
import XCTest
|
||||||
|
|
||||||
|
final class String_EmptyTests: XCTestCase {
|
||||||
|
|
||||||
|
// MARK: Tests
|
||||||
|
|
||||||
|
func test_empty() {
|
||||||
|
// GIVEN
|
||||||
|
let string = String.empty
|
||||||
|
|
||||||
|
// WHEN
|
||||||
|
// THEN
|
||||||
|
XCTAssertEqual(string, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
func test_isNotEmpty_withEmptyString() {
|
||||||
|
// GIVEN
|
||||||
|
let string = String.empty
|
||||||
|
|
||||||
|
// WHEN
|
||||||
|
let result = string.isNotEmpty()
|
||||||
|
|
||||||
|
// THEN
|
||||||
|
XCTAssertFalse(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func test_isNotEmpty_withFilledString() {
|
||||||
|
// GIVEN
|
||||||
|
let string = String.Test.string
|
||||||
|
|
||||||
|
// WHEN
|
||||||
|
let result = string.isNotEmpty()
|
||||||
|
|
||||||
|
// THEN
|
||||||
|
XCTAssertTrue(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - String+Constants
|
||||||
|
|
||||||
|
private extension String {
|
||||||
|
enum Test {
|
||||||
|
static let string = "Some test string..."
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +0,0 @@
|
|||||||
import XCTest
|
|
||||||
@testable import SwiftLibs
|
|
||||||
|
|
||||||
final class SwiftLibsTests: XCTestCase {
|
|
||||||
func testExample() throws {
|
|
||||||
// This is an example of a functional test case.
|
|
||||||
// Use XCTAssert and related functions to verify your tests produce the correct
|
|
||||||
// results.
|
|
||||||
XCTAssertEqual(SwiftLibs().text, "Hello, World!")
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user