diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b32bd50..ad2c228 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -118,3 +118,20 @@ jobs: uses: skiptools/swift-android-action@v2 with: swift-version: 6.2 + + windows: + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Swift + uses: compnerd/gha-setup-swift@main + with: + branch: swift-6.1.2-release + tag: 6.1.2-RELEASE + - name: Version + run: swift --version + - name: Build + run: swift build --build-tests + - name: Test + run: swift test --skip-build diff --git a/CommandLine/main.swift b/CommandLine/main.swift index d47a098..f802846 100644 --- a/CommandLine/main.swift +++ b/CommandLine/main.swift @@ -33,6 +33,8 @@ import Darwin.POSIX #elseif canImport(Android) import Android +#elseif canImport(ucrt) +import ucrt #else import Glibc #endif diff --git a/SwiftDraw/Sources/LayerTree/LayerTree.Transform.swift b/SwiftDraw/Sources/LayerTree/LayerTree.Transform.swift index 2c157fa..07d390e 100644 --- a/SwiftDraw/Sources/LayerTree/LayerTree.Transform.swift +++ b/SwiftDraw/Sources/LayerTree/LayerTree.Transform.swift @@ -33,6 +33,8 @@ import Darwin #elseif canImport(Android) import Android +#elseif canImport(ucrt) +import ucrt #else import Glibc #endif @@ -117,8 +119,8 @@ extension Array where Element == LayerTree.Transform { } } -#if os(Android) -// The Android module does not have Float overloads for the various math functions +#if os(Android) || os(Windows) +// The Android/Windows modules do not have Float overloads for the various math functions func tan(_ value: Float) -> Float { tanf(value) } func atan(_ value: Float) -> Float { atanf(value) } func cos(_ value: Float) -> Float { cosf(value) } diff --git a/SwiftDraw/Tests/LayerTree/LayerTree.TransformTests.swift b/SwiftDraw/Tests/LayerTree/LayerTree.TransformTests.swift index 1248ae4..463a828 100644 --- a/SwiftDraw/Tests/LayerTree/LayerTree.TransformTests.swift +++ b/SwiftDraw/Tests/LayerTree/LayerTree.TransformTests.swift @@ -37,12 +37,14 @@ final class LayerTreeTransformTests: XCTestCase { func testSkewXMatrix() { let transform = Transform.skewX(angle: LayerTree.Float.pi/4) - XCTAssertEqual(transform.toMatrix(), Matrix(a: 1, b: 0, c: tan(LayerTree.Float.pi/4), d: 1, tx: 0, ty: 0)) + let angle = LayerTree.Float.pi / 4 + XCTAssertEqual(transform.toMatrix(), Matrix(a: 1, b: 0, c: LayerTree.Float(tan(Double(angle))), d: 1, tx: 0, ty: 0)) } func testSkewYMatrix() { let transform = Transform.skewY(angle: LayerTree.Float.pi/4) - XCTAssertEqual(transform.toMatrix(), Matrix(a: 1, b: tan(LayerTree.Float.pi/4), c: 0, d: 1, tx: 0, ty: 0)) + let angle = LayerTree.Float.pi / 4 + XCTAssertEqual(transform.toMatrix(), Matrix(a: 1, b: LayerTree.Float(tan(Double(angle))), c: 0, d: 1, tx: 0, ty: 0)) } func testScaleMatrix() { @@ -59,7 +61,11 @@ final class LayerTreeTransformTests: XCTestCase { let angle = LayerTree.Float.pi/4 let transform = Transform.rotate(radians: angle) XCTAssertEqual(transform.toMatrix(), - Matrix(a: cos(angle), b: sin(angle), c: -sin(angle), d: cos(angle), tx: 0, ty: 0)) + Matrix(a: LayerTree.Float(cos(Double(angle))), + b: LayerTree.Float(sin(Double(angle))), + c: -LayerTree.Float(sin(Double(angle))), + d: LayerTree.Float(cos(Double(angle))), + tx: 0, ty: 0)) } func testMatrixConcatenation() {