From b045c43fa184c52022d7c861d98b110a5c0d332c Mon Sep 17 00:00:00 2001 From: Bas Jansen Date: Sat, 16 Sep 2023 14:10:14 +0200 Subject: [PATCH] unit test --- .gitignore | 1 + File.swift | 8 ++++ Package.swift | 5 ++- Screenshots/Tests/Queue/ToastQueueTest.swift | 36 +++++++++++++++++ Sources/Toast/Queue/ToastQueue.swift | 16 +++++++- Tests/ToastTests/Queue/ToastQueueTest.swift | 41 ++++++++++++++++++++ 6 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 File.swift create mode 100644 Screenshots/Tests/Queue/ToastQueueTest.swift create mode 100644 Tests/ToastTests/Queue/ToastQueueTest.swift diff --git a/.gitignore b/.gitignore index bb460e7..c72db23 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ xcuserdata/ DerivedData/ .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.swiftpm \ No newline at end of file diff --git a/File.swift b/File.swift new file mode 100644 index 0000000..475c73c --- /dev/null +++ b/File.swift @@ -0,0 +1,8 @@ +// +// File.swift +// Toast +// +// Created by Bas Jansen on 16/09/2023. +// + +import Foundation diff --git a/Package.swift b/Package.swift index 94b91d0..13153b9 100644 --- a/Package.swift +++ b/Package.swift @@ -23,6 +23,9 @@ let package = Package( // Targets can depend on other targets in this package, and on products in packages this package depends on. .target( name: "Toast", - dependencies: []) + dependencies: []), + .testTarget( + name: "ToastTests", + dependencies: ["Toast"]) ] ) diff --git a/Screenshots/Tests/Queue/ToastQueueTest.swift b/Screenshots/Tests/Queue/ToastQueueTest.swift new file mode 100644 index 0000000..cfba13f --- /dev/null +++ b/Screenshots/Tests/Queue/ToastQueueTest.swift @@ -0,0 +1,36 @@ +// +// ToastQueueTest.swift +// +// +// Created by Bas Jansen on 16/09/2023. +// + +import XCTest +@testable import Toast + +final class ToastQueueTest: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + 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. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/Sources/Toast/Queue/ToastQueue.swift b/Sources/Toast/Queue/ToastQueue.swift index 37c5f67..43a59b1 100644 --- a/Sources/Toast/Queue/ToastQueue.swift +++ b/Sources/Toast/Queue/ToastQueue.swift @@ -17,14 +17,26 @@ public class ToastQueue { delegates.forEach(multicast.add) } - public func enqueue(toast: Toast) -> Void { + public func enqueue(_ toast: Toast) -> Void { queue.append(toast) } - public func enqueue(toasts: [Toast]) -> Void { + public func enqueue(_ toasts: [Toast]) -> Void { toasts.forEach({ queue.append($0) }) } + public func dequeue(_ toastToDequeue: Toast) -> Void { + let index: Int? = queue.firstIndex { $0 === toastToDequeue } + + if let index { + queue.remove(at: index) + } + } + + public func size() -> Int { + return queue.count + } + public func show() -> Void { if (queue.isEmpty) { return diff --git a/Tests/ToastTests/Queue/ToastQueueTest.swift b/Tests/ToastTests/Queue/ToastQueueTest.swift new file mode 100644 index 0000000..5e55a07 --- /dev/null +++ b/Tests/ToastTests/Queue/ToastQueueTest.swift @@ -0,0 +1,41 @@ +// +// ToastQueuetest.swift +// +// +// Created by Bas Jansen on 16/09/2023. +// + +import XCTest +@testable import Toast + +final class ToastQueueTest: XCTestCase { + + private var queue: ToastQueue! + + override func setUpWithError() throws { + queue = ToastQueue() + } + + override func tearDownWithError() throws { + + } + + func test_whenEnqueuingToast_sizeIsOne() throws { + let toast = Toast.text("Toast") + + queue.enqueue(toast) + + XCTAssertEqual(queue.size(), 1) + } + + func test_whenEnqueuingMultipleToasts_sizeIsThree() throws { + let toast = Toast.text("Toast") + let toast2 = Toast.text("Toast") + let toast3 = Toast.text("Toast") + + queue.enqueue([toast, toast2, toast3]) + + XCTAssertEqual(queue.size(), 3) + } + +}