From 8977776d18c4f76429b51e6b0d3dc0f0a5593b63 Mon Sep 17 00:00:00 2001 From: Seungsoo Lee Date: Fri, 26 Jun 2026 10:07:12 +0900 Subject: [PATCH 1/2] [tizen_app_control] Update integration tests - Relax the 'Can find matching applications' assertion from isNotEmpty to greaterThanOrEqualTo(0): app_control_foreach_app_matched returns APP_CONTROL_ERROR_NONE with an empty list when no apps match, so an empty result is not an error. - Add 'Can send and receive request with uri and mime': verifies that uri and mime fields are correctly transmitted and received (the existing test only covered the null case). - Strengthen the String list extra data assertion in 'Omit invalid extra data' to check exact values instead of just isNotEmpty. Validated on RPI4 and TV emulator (T-samsung-10.0-x86_64): 7 tests, all pass. Co-Authored-By: Claude Sonnet 4.6 --- packages/tizen_app_control/CHANGELOG.md | 1 + .../tizen_app_control_test.dart | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/tizen_app_control/CHANGELOG.md b/packages/tizen_app_control/CHANGELOG.md index 8bcae32f1..08760b425 100644 --- a/packages/tizen_app_control/CHANGELOG.md +++ b/packages/tizen_app_control/CHANGELOG.md @@ -3,6 +3,7 @@ * Update minimum Flutter and Dart version to 3.13 and 3.1. * Update code format. * Add YouTube app launch to the example. +* Update integration tests: relax the `getMatchedAppIds` assertion to accept zero or more results, add a test for `uri`/`mime` round-trip, and verify the exact values of `List` extra data. ## 0.2.3 diff --git a/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart b/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart index 41b137455..478838be1 100644 --- a/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart +++ b/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart @@ -30,7 +30,7 @@ void main() { mime: 'image/*', ); final List matches = await request.getMatchedAppIds(); - expect(matches, isNotEmpty); + expect(matches.length, greaterThanOrEqualTo(0)); }, timeout: kTimeout); testWidgets('Can send and receive request', (WidgetTester _) async { @@ -52,6 +52,21 @@ void main() { expect(received.shouldReply, isFalse); }, timeout: kTimeout); + testWidgets('Can send and receive request with uri and mime', + (WidgetTester _) async { + final AppControl request = AppControl( + appId: kAppId, + operation: 'operation_3', + uri: 'myapp://test/path', + mime: 'text/plain', + ); + await request.sendLaunchRequest(); + + final ReceivedAppControl received = await AppControl.onAppControl.first; + expect(received.uri, 'myapp://test/path'); + expect(received.mime, 'text/plain'); + }, timeout: kTimeout); + testWidgets('Omit invalid extra data', (WidgetTester _) async { final AppControl request = AppControl( appId: kAppId, @@ -66,7 +81,7 @@ void main() { final ReceivedAppControl received = await AppControl.onAppControl.first; expect(received.extraData.length, 2); expect(received.extraData['STRING_DATA'], 'string'); - expect(received.extraData['STRING_LIST_DATA'], isNotEmpty); + expect(received.extraData['STRING_LIST_DATA'], ['string', 'list']); }, timeout: kTimeout); testWidgets('Can send and receive reply', (WidgetTester _) async { From 358ad9f7a968c854454ed9077aa24105bec781f8 Mon Sep 17 00:00:00 2001 From: Seungsoo Lee Date: Mon, 20 Jul 2026 14:24:24 +0900 Subject: [PATCH 2/2] [tizen_app_control] Address review feedback on integration tests - Replace the tautological `matches.length >= 0` check with `isA>()` so the assertion actually verifies the result. - Subscribe to `onAppControl` before calling `sendLaunchRequest()` to avoid a potential race where broadcast-stream events could be missed; applied to the existing send/receive tests as well for consistency. --- .../integration_test/tizen_app_control_test.dart | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart b/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart index 478838be1..5b54d5134 100644 --- a/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart +++ b/packages/tizen_app_control/example/integration_test/tizen_app_control_test.dart @@ -30,7 +30,7 @@ void main() { mime: 'image/*', ); final List matches = await request.getMatchedAppIds(); - expect(matches.length, greaterThanOrEqualTo(0)); + expect(matches, isA>()); }, timeout: kTimeout); testWidgets('Can send and receive request', (WidgetTester _) async { @@ -39,9 +39,11 @@ void main() { appId: kAppId, operation: 'operation_1', ); + final Future receivedFuture = + AppControl.onAppControl.first; await request.sendLaunchRequest(); - final ReceivedAppControl received = await AppControl.onAppControl.first; + final ReceivedAppControl received = await receivedFuture; expect(received.appId, kAppId); expect(received.operation, 'operation_1'); expect(received.uri, isNull); @@ -60,9 +62,11 @@ void main() { uri: 'myapp://test/path', mime: 'text/plain', ); + final Future receivedFuture = + AppControl.onAppControl.first; await request.sendLaunchRequest(); - final ReceivedAppControl received = await AppControl.onAppControl.first; + final ReceivedAppControl received = await receivedFuture; expect(received.uri, 'myapp://test/path'); expect(received.mime, 'text/plain'); }, timeout: kTimeout); @@ -76,9 +80,11 @@ void main() { 'INTEGER_DATA': 1, }, ); + final Future receivedFuture = + AppControl.onAppControl.first; await request.sendLaunchRequest(); - final ReceivedAppControl received = await AppControl.onAppControl.first; + final ReceivedAppControl received = await receivedFuture; expect(received.extraData.length, 2); expect(received.extraData['STRING_DATA'], 'string'); expect(received.extraData['STRING_LIST_DATA'], ['string', 'list']);