mirror of
https://github.com/phranck/TUIkit.git
synced 2026-06-20 09:54:37 +00:00
Add @MainActor to View, ViewModifier, Renderable, App, Scene protocols and all builders (ViewBuilder, SceneBuilder, ChildInfoProvider). Update renderToBuffer(), makeChildInfo(), resolveChildInfos() for main-actor isolation. Mark generic Equatable conformances with @preconcurrency. Update all 45 test suites with @MainActor annotation.
82 lines
2.2 KiB
Swift
82 lines
2.2 KiB
Swift
// 🖥️ TUIKit — Terminal UI Kit for Swift
|
|
// PreferenceValuesTests.swift
|
|
//
|
|
// Created by LAYERED.work
|
|
// License: MIT
|
|
|
|
import Testing
|
|
|
|
@testable import TUIkit
|
|
|
|
/// String preference key for testing.
|
|
private struct ValStringKey: PreferenceKey {
|
|
static let defaultValue: String = "default"
|
|
}
|
|
|
|
/// Counter preference key for testing.
|
|
private struct ValCounterKey: PreferenceKey {
|
|
static let defaultValue: Int = 0
|
|
}
|
|
|
|
@MainActor
|
|
@Suite("PreferenceValues Tests")
|
|
struct PreferenceValuesTests {
|
|
|
|
@Test("Empty values return default")
|
|
func emptyDefault() {
|
|
let values = PreferenceValues()
|
|
#expect(values[ValStringKey.self] == "default")
|
|
#expect(values[ValCounterKey.self] == 0)
|
|
}
|
|
|
|
@Test("Set and get value")
|
|
func setAndGet() {
|
|
var values = PreferenceValues()
|
|
values[ValStringKey.self] = "custom"
|
|
#expect(values[ValStringKey.self] == "custom")
|
|
}
|
|
|
|
@Test("Different keys are independent")
|
|
func independentKeys() {
|
|
var values = PreferenceValues()
|
|
values[ValStringKey.self] = "hello"
|
|
values[ValCounterKey.self] = 42
|
|
#expect(values[ValStringKey.self] == "hello")
|
|
#expect(values[ValCounterKey.self] == 42)
|
|
}
|
|
|
|
@Test("Merge overwrites existing values")
|
|
func mergeOverwrites() {
|
|
var base = PreferenceValues()
|
|
base[ValStringKey.self] = "original"
|
|
|
|
var other = PreferenceValues()
|
|
other[ValStringKey.self] = "overwritten"
|
|
|
|
base.merge(other)
|
|
#expect(base[ValStringKey.self] == "overwritten")
|
|
}
|
|
|
|
@Test("Merge preserves non-overlapping values")
|
|
func mergePreservesOthers() {
|
|
var base = PreferenceValues()
|
|
base[ValStringKey.self] = "kept"
|
|
|
|
var other = PreferenceValues()
|
|
other[ValCounterKey.self] = 99
|
|
|
|
base.merge(other)
|
|
#expect(base[ValStringKey.self] == "kept")
|
|
#expect(base[ValCounterKey.self] == 99)
|
|
}
|
|
|
|
@Test("Merge with empty values is no-op")
|
|
func mergeEmpty() {
|
|
var base = PreferenceValues()
|
|
base[ValStringKey.self] = "unchanged"
|
|
|
|
base.merge(PreferenceValues())
|
|
#expect(base[ValStringKey.self] == "unchanged")
|
|
}
|
|
}
|