chore: Migrate tests to swift-testing and update assertions

This commit is contained in:
Shibo Lyu 2025-06-14 20:21:49 +08:00
parent 3649c706d9
commit b94a694193

View file

@ -1,5 +1,5 @@
import SwiftUI
import XCTest
import Testing
@testable import TypedAppStorage
@ -47,40 +47,49 @@ struct TestArticleWithADifferentDefault: View {
}
}
final class TypedAppStorageTests: XCTestCase {
override func setUp() {
@Suite("TypedAppStorage Tests", .serialized)
struct TypedAppStorageTests {
init() {
UserDefaults.standard.removeObject(forKey: "preferredFruit")
}
func testReadDefaultValue() throws {
@Test("Read default value")
func readDefaultValue() throws {
UserDefaults.standard.removeObject(forKey: "preferredFruit")
let testArticle = TestArticle()
XCTAssertEqual(
testArticle.preferredFruit,
PreferredFruit(.veryFresh, .apple)
#expect(
testArticle.preferredFruit == PreferredFruit(.veryFresh, .apple)
)
}
func testCallSiteDefault() throws {
@Test("Call-site default")
func callSiteDefault() throws {
UserDefaults.standard.removeObject(forKey: "preferredFruit")
let testArticle = TestArticleWithADifferentDefault()
XCTAssertEqual(testArticle.preferredFruit, .init(.moderate, .pear))
#expect(testArticle.preferredFruit == .init(.moderate, .pear))
}
func testSaveAndReadBack() throws {
@Test("Save and read back")
func saveAndReadBack() throws {
UserDefaults.standard.removeObject(forKey: "preferredFruit")
let testArticle = TestArticle()
testArticle.changePreferred(to: .init(.somewhatStale, .banana))
XCTAssertEqual(testArticle.preferredFruit, .init(.somewhatStale, .banana))
#expect(testArticle.preferredFruit == .init(.somewhatStale, .banana))
}
func testSaveAndReadElsewhere() throws {
@Test("Save and read elsewhere")
func saveAndReadElsewhere() throws {
UserDefaults.standard.removeObject(forKey: "preferredFruit")
let articleA = TestArticle()
let articleB = TestArticle()
articleA.changePreferred(to: .init(.moderate, .banana))
XCTAssertEqual(articleB.preferredFruit, .init(.moderate, .banana))
#expect(articleB.preferredFruit == .init(.moderate, .banana))
}
}