diff --git a/packages/url_launcher/url_launcher_macos/example/macos/Runner.xcodeproj/project.pbxproj b/packages/url_launcher/url_launcher_macos/example/macos/Runner.xcodeproj/project.pbxproj index d8dbccea1d31..1c87fe311514 100644 --- a/packages/url_launcher/url_launcher_macos/example/macos/Runner.xcodeproj/project.pbxproj +++ b/packages/url_launcher/url_launcher_macos/example/macos/Runner.xcodeproj/project.pbxproj @@ -714,7 +714,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/url_launcher_example_example.app/Contents/MacOS/url_launcher_example_example"; }; name = Debug; @@ -733,7 +733,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/url_launcher_example_example.app/Contents/MacOS/url_launcher_example_example"; }; name = Release; @@ -752,7 +752,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/url_launcher_example_example.app/Contents/MacOS/url_launcher_example_example"; }; name = Profile; diff --git a/packages/url_launcher/url_launcher_macos/example/macos/RunnerTests/RunnerTests.swift b/packages/url_launcher/url_launcher_macos/example/macos/RunnerTests/RunnerTests.swift index 5216d421524c..2f684a83cbc8 100644 --- a/packages/url_launcher/url_launcher_macos/example/macos/RunnerTests/RunnerTests.swift +++ b/packages/url_launcher/url_launcher_macos/example/macos/RunnerTests/RunnerTests.swift @@ -3,7 +3,7 @@ // found in the LICENSE file. import FlutterMacOS -import XCTest +import Testing @testable import url_launcher_macos @@ -14,7 +14,7 @@ private func urlParsingIsStrict() -> Bool { } /// A stub to simulate the system Url handler. -class StubWorkspace: SystemURLHandler { +private class StubWorkspace: SystemURLHandler { var isSuccessful = true @@ -23,66 +23,63 @@ class StubWorkspace: SystemURLHandler { } func urlForApplication(toOpen: URL) -> URL? { - return toOpen + return isSuccessful ? toOpen : nil } } -class RunnerTests: XCTestCase { +struct RunnerTests { - func testCanLaunchSuccessReturnsTrue() throws { - let plugin = UrlLauncherPlugin() - - let result = try plugin.canLaunch(url: "https://flutter.dev") - XCTAssertNil(result.error) - XCTAssertTrue(result.value) - } - - func testCanLaunchNoAppIsAbleToOpenUrlReturnsFalse() throws { - let plugin = UrlLauncherPlugin() + @Test(arguments: [ + (url: "https://flutter.dev", isSuccessful: true), + (url: "example://flutter.dev", isSuccessful: false), + ]) + func canLaunch(url: String, isSuccessful: Bool) throws { + let workspace = StubWorkspace() + workspace.isSuccessful = isSuccessful + let plugin = UrlLauncherPlugin(workspace) - let result = try plugin.canLaunch(url: "example://flutter.dev") - XCTAssertNil(result.error) - XCTAssertFalse(result.value) + let result = try plugin.canLaunch(url: url) + #expect(result.error == nil) + #expect(result.value == isSuccessful) } - func testCanLaunchInvalidUrlReturnsError() throws { - let plugin = UrlLauncherPlugin() + @Test func canLaunchInvalidUrlReturnsError() throws { + let workspace = StubWorkspace() + workspace.isSuccessful = false + let plugin = UrlLauncherPlugin(workspace) let result = try plugin.canLaunch(url: "invalid url") if urlParsingIsStrict() { - XCTAssertEqual(result.error, .invalidUrl) + #expect(result.error == .invalidUrl) } else { - XCTAssertFalse(result.value) + #expect(!result.value) } } - func testLaunchSuccessReturnsTrue() throws { + @Test(arguments: [ + (url: "https://flutter.dev", isSuccessful: true), + (url: "schemethatdoesnotexist://flutter.dev", isSuccessful: false), + ]) + func launch(url: String, isSuccessful: Bool) throws { let workspace = StubWorkspace() + workspace.isSuccessful = isSuccessful let plugin = UrlLauncherPlugin(workspace) - let result = try plugin.launch(url: "https://flutter.dev") - XCTAssertNil(result.error) - XCTAssertTrue(result.value) + let result = try plugin.launch(url: url) + #expect(result.error == nil) + #expect(result.value == isSuccessful) } - func testLaunchNoAppIsAbleToOpenUrlReturnsFalse() throws { + @Test func launchInvalidUrlReturnsError() throws { let workspace = StubWorkspace() workspace.isSuccessful = false let plugin = UrlLauncherPlugin(workspace) - let result = try plugin.launch(url: "schemethatdoesnotexist://flutter.dev") - XCTAssertNil(result.error) - XCTAssertFalse(result.value) - } - - func testLaunchInvalidUrlReturnsError() throws { - let plugin = UrlLauncherPlugin() - let result = try plugin.launch(url: "invalid url") if urlParsingIsStrict() { - XCTAssertEqual(result.error, .invalidUrl) + #expect(result.error == .invalidUrl) } else { - XCTAssertFalse(result.value) + #expect(!result.value) } } }