JJ_MKVMaker/test/upscale_modules_contract_te...

48 lines
2.3 KiB
Dart

import 'dart:io';
import 'package:archive/archive.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:jj_mkvmaker/app/app_controller.dart';
import 'package:jj_mkvmaker/core/reader_sources.dart';
import 'package:jj_mkvmaker/platform/windows/desktop_storage_service.dart';
import 'package:jj_mkvmaker/platform/windows/process_media_tool.dart';
import 'package:jj_mkvmaker/services/platform_services.dart';
import 'package:jj_mkvmaker/ui/ai_upscale/upscale_prep.dart';
import 'package:path/path.dart' as p;
void main() {
AppController controller() => AppController(PlatformServices(mediaTool: ProcessMediaTool('x', 'y'), storage: DesktopStorageService()));
test('약속 upscaleOptionsOf: 환경 설정 > AI 그림의 해상도 올리기 값을 그대로, 저장 폴더는 준 것이 먼저', () {
final c = controller();
c.settings.aiImage
..upScale = 2
..upFormat = 'jpg'
..upJpgQuality = 80
..upDir = r'D:\up';
final o = upscaleOptionsOf(c);
expect([o.model, o.scale, o.format, o.jpgQuality, o.outDir], [c.settings.aiImage.upModel, 2, 'jpg', 80, r'D:\up']);
expect(upscaleOptionsOf(c, outDir: r'E:\here').outDir, r'E:\here');
});
test('약속 readerPageFile: 이 기기의 그림은 그대로, ZIP 안의 그림은 꺼내 "ZIP이름_AI" 폴더 기준 (원본은 그대로)', () async {
final dir = await Directory.systemTemp.createTemp('jj_up_');
addTearDown(() => dir.delete(recursive: true));
final c = controller()..settings.aiImage.upDir = '';
final a = p.join(dir.path, 'a.png');
File(a).writeAsBytesSync([1, 2, 3]);
final files = ImageFilesSource([a], tempDir: dir.path, title: 't');
expect(await readerPageFile(c, files, 0), (a, a, ''));
final zip = p.join(dir.path, 'book.zip');
File(zip).writeAsBytesSync(ZipEncoder().encode(Archive()..addFile(ArchiveFile('p1.png', 3, [4, 5, 6]))));
final src = await ZipImagesSource.open(zip, tempDir: dir.path, imageExts: const ['png']);
final r = (await readerPageFile(c, src, 0))!;
expect(File(r.$1).readAsBytesSync(), [4, 5, 6], reason: '꺼낸 임시 파일');
expect([r.$2, r.$3], [p.join(dir.path, 'book_AI', 'p1.png'), p.join(dir.path, 'book_AI')]);
expect(File(zip).existsSync(), isTrue);
await src.dispose();
await Directory(p.dirname(r.$1)).delete(recursive: true);
});
}