|
2 | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | 3 | // found in the LICENSE file. |
4 | 4 |
|
| 5 | +import 'dart:async'; |
| 6 | + |
5 | 7 | import 'package:flutter_test/flutter_test.dart'; |
6 | 8 | import 'package:integration_test/integration_test.dart'; |
7 | 9 | import 'package:tizen_audio_manager/tizen_audio_manager.dart'; |
@@ -204,4 +206,44 @@ void main() { |
204 | 206 | level = await AudioManager.volumeController.getLevel(AudioVolumeType.voip); |
205 | 207 | expect(level, equals(0)); |
206 | 208 | }); |
| 209 | + |
| 210 | + testWidgets('currentPlaybackType returns a valid AudioVolumeType', |
| 211 | + (WidgetTester tester) async { |
| 212 | + final AudioVolumeType type = |
| 213 | + await AudioManager.volumeController.currentPlaybackType; |
| 214 | + expect(AudioVolumeType.values, contains(type)); |
| 215 | + }); |
| 216 | + |
| 217 | + testWidgets('onChanged emits VolumeChangedEvent when volume is changed', |
| 218 | + (WidgetTester tester) async { |
| 219 | + final int originalLevel = |
| 220 | + await AudioManager.volumeController.getLevel(AudioVolumeType.system); |
| 221 | + final int maxLevel = |
| 222 | + await AudioManager.volumeController.getMaxLevel(AudioVolumeType.system); |
| 223 | + final int targetLevel = originalLevel == maxLevel ? 0 : maxLevel; |
| 224 | + |
| 225 | + final Completer<VolumeChangedEvent> completer = |
| 226 | + Completer<VolumeChangedEvent>(); |
| 227 | + final StreamSubscription<VolumeChangedEvent> subscription = AudioManager |
| 228 | + .volumeController.onChanged |
| 229 | + .listen((VolumeChangedEvent event) { |
| 230 | + if (event.type == AudioVolumeType.system && !completer.isCompleted) { |
| 231 | + completer.complete(event); |
| 232 | + } |
| 233 | + }); |
| 234 | + |
| 235 | + try { |
| 236 | + await AudioManager.volumeController |
| 237 | + .setLevel(AudioVolumeType.system, targetLevel); |
| 238 | + final VolumeChangedEvent event = |
| 239 | + await completer.future.timeout(const Duration(seconds: 5)); |
| 240 | + |
| 241 | + expect(event.type, equals(AudioVolumeType.system)); |
| 242 | + expect(event.level, equals(targetLevel)); |
| 243 | + } finally { |
| 244 | + await AudioManager.volumeController |
| 245 | + .setLevel(AudioVolumeType.system, originalLevel); |
| 246 | + await subscription.cancel(); |
| 247 | + } |
| 248 | + }); |
207 | 249 | } |
0 commit comments