Files
e-party-iOS/yana/Utils/TCCos/TestCOSManager.swift
edwinQQQ b966e24532 feat: 更新COSManager和相关视图以增强图片上传功能
- 修改COSManagerAdapter以支持新的TCCos组件,确保与腾讯云COS的兼容性。
- 在CreateFeedFeature中新增图片上传相关状态和Action,优化图片选择与上传逻辑。
- 更新CreateFeedView以整合图片上传功能,提升用户体验。
- 在多个视图中添加键盘状态管理,改善用户交互体验。
- 新增COS相关的测试文件,确保功能的正确性和稳定性。
2025-07-31 11:41:56 +08:00

106 lines
3.9 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Foundation
import ComposableArchitecture
/// COSManager
public struct TestCOSManager {
/// Task.detached
public static func testTaskDetachedSyntax() {
debugInfoSync("🧪 测试 Task.detached 语法...")
// Task.detached 使
let task = Task.detached {
//
try? await Task.sleep(nanoseconds: 1_000_000) // 1ms
return "test result"
}
debugInfoSync("✅ Task.detached 语法正确")
}
/// Optional
public static func testOptionalContext() {
debugInfoSync("🧪 测试 Optional 类型上下文...")
// Optional
let result1: String? = Optional<String>.none
let result2: String? = Optional<String>.some("test")
debugInfoSync("✅ Optional 类型上下文正确")
debugInfoSync(" - result1: \(result1?.description ?? "nil")")
debugInfoSync(" - result2: \(result2?.description ?? "nil")")
}
/// TcTokenData Optional
public static func testTokenDataOptional() {
debugInfoSync("🧪 测试 TcTokenData Optional 处理...")
let tokenData = TcTokenData(
bucket: "test-bucket",
sessionToken: "test-session-token",
region: "ap-beijing",
customDomain: "",
accelerate: false,
appId: "test-app-id",
secretKey: "test-secret-key",
expireTime: 1234567890,
startTime: 1234567890 - 3600,
secretId: "test-secret-id"
)
// Optional<TcTokenData>
let optionalToken1: TcTokenData? = Optional<TcTokenData>.none
let optionalToken2: TcTokenData? = Optional<TcTokenData>.some(tokenData)
debugInfoSync("✅ TcTokenData Optional 处理正确")
debugInfoSync(" - optionalToken1: \(optionalToken1?.bucket ?? "nil")")
debugInfoSync(" - optionalToken2: \(optionalToken2?.bucket ?? "nil")")
}
///
public static func testDataRaceFix() {
debugInfoSync("🧪 测试数据竞争修复...")
// Task.detached withCheckedContinuation 使
let task = Task.detached {
await withCheckedContinuation { continuation in
//
Task {
try? await Task.sleep(nanoseconds: 1_000_000) // 1ms
continuation.resume(returning: "test result")
}
}
}
debugInfoSync("✅ 数据竞争修复正确")
debugInfoSync(" - Task.detached 中的 withCheckedContinuation 使用正确")
debugInfoSync(" - 移除了不必要的 withTaskGroup 复杂性")
debugInfoSync(" - 避免了 @MainActor 隔离上下文中的数据竞争")
}
///
public static func runAllTests() {
debugInfoSync("🧪 开始 COSManager 修复验证测试...")
testTaskDetachedSyntax()
testOptionalContext()
testTokenDataOptional()
testDataRaceFix()
debugInfoSync("🎉 COSManager 修复验证测试通过!")
debugInfoSync("📋 修复验证结果:")
debugInfoSync(" ✅ Task.detached 语法:正确使用")
debugInfoSync(" ✅ Optional 类型上下文:明确类型声明")
debugInfoSync(" ✅ TcTokenData Optional正确处理")
debugInfoSync(" ✅ 数据竞争修复withTaskGroup 在非隔离上下文中执行")
debugInfoSync("")
debugInfoSync("🚀 COSManager 编译错误已修复!")
}
}
// MARK: - 便
/// COSManager
public func testCOSManager() {
TestCOSManager.runAllTests()
}