Files
ggbond268--mactools/Plugins/ActivityBar/Tests/ActivityBarTestSupport.swift
T
wehub-resource-sync 1d1286fadb
Build / Build and test (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:18:38 +08:00

131 lines
2.9 KiB
Swift

import Foundation
import MacToolsPluginKit
@testable import ActivityBarPlugin
@MainActor
final class ActivityBarMemoryStorage: PluginStorage {
private var values: [String: Any] = [:]
private var setCounts: [String: Int] = [:]
func object(forKey key: String) -> Any? {
values[key]
}
func data(forKey key: String) -> Data? {
values[key] as? Data
}
func string(forKey key: String) -> String? {
values[key] as? String
}
func stringArray(forKey key: String) -> [String]? {
values[key] as? [String]
}
func integer(forKey key: String) -> Int {
values[key] as? Int ?? 0
}
func bool(forKey key: String) -> Bool {
values[key] as? Bool ?? false
}
func set(_ value: Any?, forKey key: String) {
setCounts[key, default: 0] += 1
values[key] = value
}
func setCallCount(forKey key: String) -> Int {
setCounts[key] ?? 0
}
func removeObject(forKey key: String) {
values.removeValue(forKey: key)
}
func migrateValueIfNeeded(fromLegacyKey legacyKey: String, to key: String) {
guard values[key] == nil, let value = values[legacyKey] else {
return
}
values[key] = value
values.removeValue(forKey: legacyKey)
}
}
@MainActor
final class ActivityBarFakeInputMonitor: ActivityBarInputMonitoring {
var status: ActivityBarInputMonitorStatus = .idle
var onEvent: ((ActivityBarInputEvent) -> Void)?
private(set) var startCallCount = 0
private(set) var stopCallCount = 0
func start() {
startCallCount += 1
status = .running
}
func stop() {
stopCallCount += 1
status = .idle
}
func emit(_ event: ActivityBarInputEvent) {
onEvent?(event)
}
}
final class ActivityBarFakeSocketServer: ActivityBarSocketServing {
var isRunning = false
var startError: Error?
private(set) var startCallCount = 0
private(set) var stopCallCount = 0
func start() throws {
guard !isRunning else {
return
}
startCallCount += 1
if let startError {
throw startError
}
isRunning = true
}
func stop() {
stopCallCount += 1
isRunning = false
}
}
func activityBarTestDate(
year: Int = 2026,
month: Int = 5,
day: Int = 18,
hour: Int = 9,
minute: Int = 0,
second: Int = 0
) -> Date {
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
return calendar.date(
from: DateComponents(
timeZone: calendar.timeZone,
year: year,
month: month,
day: day,
hour: hour,
minute: minute,
second: second
)
)!
}
func activityBarTestCalendar() -> Calendar {
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
return calendar
}