From 648b47585b8c3677d42f557b4203560c2846b1c6 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 21 Sep 2025 13:23:42 +0800 Subject: [PATCH 1/3] Add CoreSystemUtilsTests --- .../{UIUtils.swift => CoreSystemUtils.swift} | 6 ++-- .../Util/CoreSystemUtilsTests.swift | 30 +++++++++++++++++++ .../Util/DebuggerTests.swift | 6 +--- 3 files changed, 35 insertions(+), 7 deletions(-) rename Sources/OpenSwiftUICore/Util/{UIUtils.swift => CoreSystemUtils.swift} (92%) create mode 100644 Tests/OpenSwiftUICoreTests/Util/CoreSystemUtilsTests.swift diff --git a/Sources/OpenSwiftUICore/Util/UIUtils.swift b/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift similarity index 92% rename from Sources/OpenSwiftUICore/Util/UIUtils.swift rename to Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift index 936c39b91..89f284f65 100644 --- a/Sources/OpenSwiftUICore/Util/UIUtils.swift +++ b/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift @@ -1,9 +1,9 @@ // -// UIUtils.swift +// CoreSystemUtils.swift // OpenSwiftUICore // // Audited for 6.5.4 -// Status: WIP +// Status: Complete import OpenSwiftUI_SPI @@ -38,7 +38,9 @@ package func isAppKitBased() -> Bool { #endif } +#if canImport(Darwin) extension CoreSystem { @inline(__always) static var defaults: CoreSystem = isAppKitBased() ? .appKit : .uiKit } +#endif diff --git a/Tests/OpenSwiftUICoreTests/Util/CoreSystemUtilsTests.swift b/Tests/OpenSwiftUICoreTests/Util/CoreSystemUtilsTests.swift new file mode 100644 index 000000000..362572fc7 --- /dev/null +++ b/Tests/OpenSwiftUICoreTests/Util/CoreSystemUtilsTests.swift @@ -0,0 +1,30 @@ +// +// CoreSystemUtilsTests.swift +// OpenSwiftUICoreTests + +import OpenSwiftUICore +import OpenSwiftUI_SPI +import Testing + +struct CoreSystemUtilsTests { + @Test + func frameworkConditionCheck() { + #if targetEnvironment(macCatalyst) + #expect(isCatalyst() == true) + #expect(isUIKitBased() == true) + #expect(isAppKitBased() == false) + #elseif os(macOS) + #expect(isCatalyst() == false) + #expect(isUIKitBased() == false) + #expect(isAppKitBased() == true) + #elseif os(iOS) || os(visionOS) + #expect(isCatalyst() == false) + #expect(isUIKitBased() == true) + #expect(isAppKitBased() == false) + #else + #expect(isCatalyst() == false) + #expect(isUIKitBased() == false) + #expect(isAppKitBased() == false) + #endif + } +} diff --git a/Tests/OpenSwiftUICoreTests/Util/DebuggerTests.swift b/Tests/OpenSwiftUICoreTests/Util/DebuggerTests.swift index 4d39795e0..202f9208e 100644 --- a/Tests/OpenSwiftUICoreTests/Util/DebuggerTests.swift +++ b/Tests/OpenSwiftUICoreTests/Util/DebuggerTests.swift @@ -1,13 +1,9 @@ // // DebuggerTests.swift // OpenSwiftUICoreTests -// -// Audited for 6.5.4 -// Status: Complete -// +import OpenSwiftUICore import Testing -@testable import OpenSwiftUICore struct DebuggerTests { @Test From 2dd1584742855a7c4c9f3ba0b37e21e454b93a00 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 21 Sep 2025 13:52:44 +0800 Subject: [PATCH 2/3] Update CoreSystem --- Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift | 10 +++++++--- .../Overlay/CoreGraphics/OpenSwiftUICoreSystem.h | 8 +++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift b/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift index 89f284f65..bc5d19b73 100644 --- a/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift +++ b/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift @@ -38,9 +38,13 @@ package func isAppKitBased() -> Bool { #endif } -#if canImport(Darwin) extension CoreSystem { @inline(__always) - static var defaults: CoreSystem = isAppKitBased() ? .appKit : .uiKit + static var defaults: CoreSystem { + #if canImport(Darwin) + isAppKitBased() ? .appKit : .uiKit + #else + .unknown + #endif + } } -#endif diff --git a/Sources/OpenSwiftUI_SPI/Overlay/CoreGraphics/OpenSwiftUICoreSystem.h b/Sources/OpenSwiftUI_SPI/Overlay/CoreGraphics/OpenSwiftUICoreSystem.h index 3f10c170b..0cbd3d04e 100644 --- a/Sources/OpenSwiftUI_SPI/Overlay/CoreGraphics/OpenSwiftUICoreSystem.h +++ b/Sources/OpenSwiftUI_SPI/Overlay/CoreGraphics/OpenSwiftUICoreSystem.h @@ -2,7 +2,7 @@ // OpenSwiftUICoreSystem.h // OpenSwiftUI_SPI // -// Audited for iOS 18.0 +// Audited for 6.5.4 // Status: Complete #ifndef OpenSwiftUICoreSystem_h @@ -11,8 +11,14 @@ #include "OpenSwiftUIBase.h" typedef OPENSWIFTUI_ENUM(uint8_t, OpenSwiftUICoreSystem) { + /// UIKit based system (iOS, visionOS, Mac Catalyst) OpenSwiftUICoreSystemUIKit, + + /// AppKit based system (macOS) OpenSwiftUICoreSystemAppKit, + + /// Placeholder for unsupported platforms (eg. Linux) + OpenSwiftUICoreSystemUnknown, } OPENSWIFTUI_SWIFT_NAME(CoreSystem); #endif /* OpenSwiftUICoreSystem_h */ From 831f138f96907c7d5fb55c7e49f669e2de27876a Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 21 Sep 2025 14:14:41 +0800 Subject: [PATCH 3/3] Audit CoreColor and update CoreSystem.default --- .../Graphic/Color/CoreColor.swift | 11 ++++---- .../Graphic/Color/SystemColors.swift | 26 +++++++++---------- .../Util/CoreSystemUtils.swift | 4 +-- .../Util/CoreSystemUtilsTests.swift | 4 +++ .../Overlay/CoreGraphics/CoreColorTests.swift | 14 +++++----- 5 files changed, 32 insertions(+), 27 deletions(-) diff --git a/Sources/OpenSwiftUICore/Graphic/Color/CoreColor.swift b/Sources/OpenSwiftUICore/Graphic/Color/CoreColor.swift index c11158a6e..6624b7f5f 100644 --- a/Sources/OpenSwiftUICore/Graphic/Color/CoreColor.swift +++ b/Sources/OpenSwiftUICore/Graphic/Color/CoreColor.swift @@ -2,6 +2,7 @@ // CoreColor.swift // OpenSwiftUICore // +// Audited for 6.4.41 // Status: Complete // ID: 4330A474F53D66045762501ED6F8A749 (SwiftUICore) @@ -9,7 +10,7 @@ package import Foundation import OpenSwiftUI_SPI -// MARK: - Color.Resolved + PlatformColor [6.4.41] +// MARK: - Color.Resolved + PlatformColor extension Color.Resolved { package init?(platformColor: AnyObject) { @@ -17,7 +18,7 @@ extension Color.Resolved { var green: CGFloat = 0 var blue: CGFloat = 0 var alpha: CGFloat = 0 - let result = CoreColorPlatformColorGetComponents(system: .defaults, color: platformColor, red: &red, green: &green, blue: &blue, alpha: &alpha) + let result = CoreColorPlatformColorGetComponents(system: .default, color: platformColor, red: &red, green: &green, blue: &blue, alpha: &alpha) if result { self.init(colorSpace: .sRGB, red: Float(red), green: Float(green), blue: Float(blue), opacity: Float(alpha)) } else { @@ -34,7 +35,7 @@ extension Color.Resolved { } } -// MARK: - CoreColor + PlatformColor [6.4.41] +// MARK: - CoreColor + PlatformColor extension CoreColor { package static func platformColor(resolvedColor: Color.Resolved) -> NSObject? { @@ -42,14 +43,14 @@ extension CoreColor { } package static func platformColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) -> NSObject? { - CorePlatformColorForRGBA(system: .defaults, red: red, green: green, blue: blue, alpha: alpha) as? NSObject + CorePlatformColorForRGBA(system: .default, red: red, green: green, blue: blue, alpha: alpha) as? NSObject } } #if OPENSWIFTUI_LINK_COREUI package import CoreUI -// MARK: - CoreUINamedColorProvider [6.4.41] +// MARK: - CoreUINamedColorProvider package protocol CoreUINamedColorProvider { static func effectiveCGColor(cuiColor: CUINamedColor, in environment: EnvironmentValues) -> CGColor? diff --git a/Sources/OpenSwiftUICore/Graphic/Color/SystemColors.swift b/Sources/OpenSwiftUICore/Graphic/Color/SystemColors.swift index 92e1513f7..79aaf87aa 100644 --- a/Sources/OpenSwiftUICore/Graphic/Color/SystemColors.swift +++ b/Sources/OpenSwiftUICore/Graphic/Color/SystemColors.swift @@ -206,19 +206,19 @@ package enum SystemColorType: ColorProvider { package var kitColor: AnyObject? { #if canImport(Darwin) switch self { - case .red: CoreColor.systemRedColor(with: .defaults) - case .orange: CoreColor.systemOrangeColor(with: .defaults) - case .yellow: CoreColor.systemYellowColor(with: .defaults) - case .green: CoreColor.systemGreenColor(with: .defaults) - case .teal: CoreColor.systemTealColor(with: .defaults) - case .mint: CoreColor.systemMintColor(with: .defaults) - case .cyan: CoreColor.systemCyanColor(with: .defaults) - case .blue: CoreColor.systemBlueColor(with: .defaults) - case .indigo: CoreColor.systemIndigoColor(with: .defaults) - case .purple: CoreColor.systemPurpleColor(with: .defaults) - case .pink: CoreColor.systemPinkColor(with: .defaults) - case .brown: CoreColor.systemBrownColor(with: .defaults) - case .gray: CoreColor.systemGrayColor(with: .defaults) + case .red: CoreColor.systemRedColor(with: .default) + case .orange: CoreColor.systemOrangeColor(with: .default) + case .yellow: CoreColor.systemYellowColor(with: .default) + case .green: CoreColor.systemGreenColor(with: .default) + case .teal: CoreColor.systemTealColor(with: .default) + case .mint: CoreColor.systemMintColor(with: .default) + case .cyan: CoreColor.systemCyanColor(with: .default) + case .blue: CoreColor.systemBlueColor(with: .default) + case .indigo: CoreColor.systemIndigoColor(with: .default) + case .purple: CoreColor.systemPurpleColor(with: .default) + case .pink: CoreColor.systemPinkColor(with: .default) + case .brown: CoreColor.systemBrownColor(with: .default) + case .gray: CoreColor.systemGrayColor(with: .default) default: nil } #else diff --git a/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift b/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift index bc5d19b73..c3af3aa8d 100644 --- a/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift +++ b/Sources/OpenSwiftUICore/Util/CoreSystemUtils.swift @@ -5,7 +5,7 @@ // Audited for 6.5.4 // Status: Complete -import OpenSwiftUI_SPI +package import OpenSwiftUI_SPI // NOTE: use runtime check instead of #if targetEnvironment(macCatalyst) // Because Mac Catalyst will use macOS-varient build of OpenSwiftUICore.framework and Mac Catalyst/UIKitForMac varient of OpenSwiftUI.framework @@ -40,7 +40,7 @@ package func isAppKitBased() -> Bool { extension CoreSystem { @inline(__always) - static var defaults: CoreSystem { + package static var `default`: CoreSystem { #if canImport(Darwin) isAppKitBased() ? .appKit : .uiKit #else diff --git a/Tests/OpenSwiftUICoreTests/Util/CoreSystemUtilsTests.swift b/Tests/OpenSwiftUICoreTests/Util/CoreSystemUtilsTests.swift index 362572fc7..9f27d8185 100644 --- a/Tests/OpenSwiftUICoreTests/Util/CoreSystemUtilsTests.swift +++ b/Tests/OpenSwiftUICoreTests/Util/CoreSystemUtilsTests.swift @@ -13,18 +13,22 @@ struct CoreSystemUtilsTests { #expect(isCatalyst() == true) #expect(isUIKitBased() == true) #expect(isAppKitBased() == false) + #expect(CoreSystem.default == .uiKit) #elseif os(macOS) #expect(isCatalyst() == false) #expect(isUIKitBased() == false) #expect(isAppKitBased() == true) + #expect(CoreSystem.default == .appKit) #elseif os(iOS) || os(visionOS) #expect(isCatalyst() == false) #expect(isUIKitBased() == true) #expect(isAppKitBased() == false) + #expect(CoreSystem.default == .uiKit) #else #expect(isCatalyst() == false) #expect(isUIKitBased() == false) #expect(isAppKitBased() == false) + #expect(CoreSystem.default == .unknown) #endif } } diff --git a/Tests/OpenSwiftUI_SPITests/Overlay/CoreGraphics/CoreColorTests.swift b/Tests/OpenSwiftUI_SPITests/Overlay/CoreGraphics/CoreColorTests.swift index 2dc672773..23714e581 100644 --- a/Tests/OpenSwiftUI_SPITests/Overlay/CoreGraphics/CoreColorTests.swift +++ b/Tests/OpenSwiftUI_SPITests/Overlay/CoreGraphics/CoreColorTests.swift @@ -33,17 +33,17 @@ struct CoreColorTests { var g: CGFloat = 0 var b: CGFloat = 0 var a: CGFloat = 0 - #expect(CoreColorPlatformColorGetComponents(system: .defaults, color: blackColor, red: &r, green: &g, blue: &b, alpha: &a) == true) + #expect(CoreColorPlatformColorGetComponents(system: .default, color: blackColor, red: &r, green: &g, blue: &b, alpha: &a) == true) #expect(r.isApproximatelyEqual(to: 0)) #expect(g.isApproximatelyEqual(to: 0)) #expect(b.isApproximatelyEqual(to: 0)) #expect(a.isApproximatelyEqual(to: 1)) - #expect(CoreColorPlatformColorGetComponents(system: .defaults, color: grayColor, red: &r, green: &g, blue: &b, alpha: &a) == true) + #expect(CoreColorPlatformColorGetComponents(system: .default, color: grayColor, red: &r, green: &g, blue: &b, alpha: &a) == true) #expect(r.isApproximatelyEqual(to: 0.5)) #expect(g.isApproximatelyEqual(to: 0.5)) #expect(b.isApproximatelyEqual(to: 0.5)) #expect(a.isApproximatelyEqual(to: 1)) - #expect(CoreColorPlatformColorGetComponents(system: .defaults, color: whiteColor, red: &r, green: &g, blue: &b, alpha: &a) == true) + #expect(CoreColorPlatformColorGetComponents(system: .default, color: whiteColor, red: &r, green: &g, blue: &b, alpha: &a) == true) #expect(r.isApproximatelyEqual(to: 1)) #expect(g.isApproximatelyEqual(to: 1)) #expect(b.isApproximatelyEqual(to: 1)) @@ -52,9 +52,9 @@ struct CoreColorTests { @Test func platformColorForRGBA() throws { - let blackColorObject = try #require(CorePlatformColorForRGBA(system: .defaults, red: 0, green: 0, blue: 0, alpha: 1)) - let greyColorObject = try #require(CorePlatformColorForRGBA(system: .defaults, red: 0.5, green: 0.5, blue: 0.5, alpha: 1)) - let whiteColorObject = try #require(CorePlatformColorForRGBA(system: .defaults, red: 1, green: 1, blue: 1, alpha: 1)) + let blackColorObject = try #require(CorePlatformColorForRGBA(system: .default, red: 0, green: 0, blue: 0, alpha: 1)) + let greyColorObject = try #require(CorePlatformColorForRGBA(system: .default, red: 0.5, green: 0.5, blue: 0.5, alpha: 1)) + let whiteColorObject = try #require(CorePlatformColorForRGBA(system: .default, red: 1, green: 1, blue: 1, alpha: 1)) #if os(macOS) let blackColor = try #require((blackColorObject as? NSColor)?.usingColorSpace(.deviceRGB)) let greyColor = try #require(greyColorObject as? NSColor) @@ -98,7 +98,7 @@ struct CoreColorTests { @Test func getKitColorClass() { - let colorClass: AnyClass? = CoreColorGetKitColorClass(system: .defaults) + let colorClass: AnyClass? = CoreColorGetKitColorClass(system: .default) #if os(macOS) #expect(colorClass == NSColor.self) #elseif os(iOS)