Skip to content

Commit 0085e2e

Browse files
authored
Merge pull request #8 from gokhanamal/test/add-basic-tests
Add basic tests + run tests in CI
2 parents 7f5fb32 + e85fc9a commit 0085e2e

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,10 @@ jobs:
2626
-scheme IndieBuilderKit \
2727
-destination "generic/platform=iOS" \
2828
build
29+
30+
- name: Test (iOS Simulator)
31+
run: |
32+
xcodebuild \
33+
-scheme IndieBuilderKit \
34+
-destination "platform=iOS Simulator,name=iPhone 16" \
35+
test

Package.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ let package = Package(
2626
resources: [
2727
.process("Fonts")
2828
]
29+
),
30+
.testTarget(
31+
name: "IndieBuilderKitTests",
32+
dependencies: ["IndieBuilderKit"]
2933
)
3034
]
3135
)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import XCTest
2+
@testable import IndieBuilderKit
3+
4+
final class UserDefaultsWrapperTests: XCTestCase {
5+
func testUserDefaultStoresAndReads() {
6+
let defaults = UserDefaults(suiteName: "IndieBuilderKitTests.UserDefaults")!
7+
defaults.removePersistentDomain(forName: "IndieBuilderKitTests.UserDefaults")
8+
9+
struct TestStore {
10+
@UserDefault(key: "flag", defaultValue: false, userDefaults: UserDefaults(suiteName: "IndieBuilderKitTests.UserDefaults")!)
11+
static var flag: Bool
12+
}
13+
14+
XCTAssertEqual(TestStore.flag, false)
15+
TestStore.flag = true
16+
XCTAssertEqual(TestStore.flag, true)
17+
}
18+
19+
func testCodableUserDefaultRoundTrip() throws {
20+
let defaults = UserDefaults(suiteName: "IndieBuilderKitTests.CodableUserDefaults")!
21+
defaults.removePersistentDomain(forName: "IndieBuilderKitTests.CodableUserDefaults")
22+
23+
struct Model: Codable, Equatable {
24+
let id: Int
25+
let name: String
26+
}
27+
28+
struct TestStore {
29+
@CodableUserDefault(key: "model", defaultValue: nil, userDefaults: UserDefaults(suiteName: "IndieBuilderKitTests.CodableUserDefaults")!)
30+
static var model: Model?
31+
}
32+
33+
XCTAssertNil(TestStore.model)
34+
TestStore.model = Model(id: 1, name: "A")
35+
XCTAssertEqual(TestStore.model, Model(id: 1, name: "A"))
36+
}
37+
}

0 commit comments

Comments
 (0)