JJ_MKVMaker/integration_test/av1_check_test.dart

34 lines
1.4 KiB
Dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:jj_mkvmaker/platform/common/media_kit_full_player.dart';
import 'package:jj_mkvmaker/platform/common/media_kit_player.dart';
/// AV1 (하드웨어 디코딩 미지원 그래픽카드) 파일: 오류 알림 없이 재생되는지 (JJ_AV1_FILE)
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
testWidgets('AV1 재생 · 오류 알림 없음', (tester) async {
final file = Platform.environment['JJ_AV1_FILE'];
if (file == null || !File(file).existsSync()) return;
MediaKitPreviewPlayer.ensureInitialized();
final pl = MediaKitFullPlayer();
final errors = <String>[];
pl.errors.listen(errors.add);
await tester.pumpWidget(MaterialApp(home: Scaffold(body: pl.buildView())));
await tester.runAsync(() => pl.open([file]));
for (var i = 0; i < 60; i++) {
await tester.runAsync(() => Future<void>.delayed(const Duration(milliseconds: 100)));
await tester.pump();
}
final s = pl.state.value;
// ignore: avoid_print
print('RESULT 위치 ${s.position.inMilliseconds}ms 음성트랙 ${s.audioTracks.length} 오류 $errors');
expect(s.position, greaterThan(const Duration(seconds: 4)));
expect(errors, isEmpty);
await tester.runAsync(() => pl.dispose());
});
}