JJ_MKVMaker/test/sd_engine_select_test.dart

39 lines
2.2 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:jj_mkvmaker/app/ai_local.dart';
/// 195: Android 의 AI 엔진 (sd-cli) 판 고르기 · 엔진이 죽은 신호별 문구
void main() {
// 실제 기기의 /proc/cpuinfo Features 줄 (a4 확인)
const p11 = 'processor\t: 0\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid\n'
'processor\t: 7\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid\n'; // Snapdragon 662 (ARMv8.0)
const note10 = 'processor\t: 0\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp\n'
'processor\t: 4\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp\n';
const s10 = 'Features\t: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 '
'sm3 sm4 asimddp sha512 asimdfhm dit uscat ilrcpc flagm ssbs sb paca pacg dcpodp flagm2 frint i8mm bf16 bti\n';
test('195: dotprod · fp16 이 없는 CPU (P11) 는 v8.0 판, 있으면 (노트 10+ · S10) 빠른 판', () {
expect(sdCliLibName(p11), 'libsdcli_v80.so');
expect(sdCliLibName(note10), 'libsdcli.so');
expect(sdCliLibName(s10), 'libsdcli.so');
});
test('195: 모르면 (읽지 못함 · 코어마다 다름) 어느 CPU 에서나 도는 판', () {
expect(sdCliLibName(''), 'libsdcli_v80.so');
// 한 코어라도 없으면 (그 코어에서 돌면 죽으므로)
expect(sdCliLibName('Features\t: fp asimd asimddp fphp\nFeatures\t: fp asimd\n'), 'libsdcli_v80.so');
// 이름이 비슷한 다른 기능 (asimdhp 만) 은 fphp 로 치지 않는다
expect(sdCliLibName('Features\t: fp asimd asimddp asimdhp\n'), 'libsdcli_v80.so');
});
test('195: 엔진이 죽은 신호별 문구 - CPU 미지원 · 메모리는 그 신호일 때만', () {
expect(sdExitMessage(-4), contains('CPU'));
expect(sdExitMessage(-4), isNot(contains('메모리')));
expect(sdExitMessage(-9), contains('메모리'));
for (final code in [1, -6, -11]) {
expect(sdExitMessage(code), contains('$code'));
expect(sdExitMessage(code), isNot(contains('메모리')));
expect(sdExitMessage(code), isNot(contains('깨졌')));
}
});
}