[Feature] Some basic core feature #1

Merged
javier merged 3 commits from feature/core into main 2023-04-16 12:27:57 +00:00
7 changed files with 182 additions and 22 deletions

View File

@ -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"
), ),
] ]
) )

View 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"
}
}

View 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
}
}

View File

@ -1,6 +0,0 @@
public struct SwiftLibs {
public private(set) var text = "Hello, World!"
public init() {
}
}

View 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)
}
}
}

View 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..."
}
}

View File

@ -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!")
}
}