[Feature] Some basic core feature #1
@ -8,22 +8,23 @@ let package = Package(
|
||||
.library(
|
||||
name: "SwiftLibs",
|
||||
targets: [
|
||||
"SwiftLibs"
|
||||
"Core"
|
||||
]
|
||||
),
|
||||
],
|
||||
dependencies: [],
|
||||
targets: [
|
||||
.target(
|
||||
name: "SwiftLibs",
|
||||
name: "Core",
|
||||
dependencies: [
|
||||
]
|
||||
),
|
||||
.testTarget(
|
||||
name: "SwiftLibsTests",
|
||||
name: "CoreTests",
|
||||
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