JJ_MKVMaker/test/focus_after_delete_contract...

33 lines
1.4 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:jj_mkvmaker/core/explorer/focus_after_delete.dart';
/// 약속 (관리자 결정 10/23): 지운 뒤 초점은 지운 줄의 다음 줄로, 마지막이었으면 앞 줄로 (TC · X-plore 와 같음)
void main() {
bool same(String a, String b) => a == b;
bool inside(String x, String d) => x == d || x.startsWith('$d/');
String? f(List<String> shown, List<String> gone, String? focused) =>
focusAfterDelete(shown, gone, focused, same: same, inside: inside);
const list = ['/d/a', '/d/b', '/d/c', '/d/e'];
test('지운 줄의 다음 줄 · 마지막이면 앞 줄', () {
expect(f(list, ['/d/b'], '/d/b'), '/d/c');
expect(f(list, ['/d/e'], '/d/e'), '/d/c');
expect(f(list, ['/d/a'], '/d/a'), '/d/b');
});
test('여럿을 지우면 남은 줄 가운데 다음 첫째 (없으면 앞의 마지막) · 다 지우면 빈 값', () {
expect(f(list, ['/d/b', '/d/c'], '/d/b'), '/d/e');
expect(f(list, ['/d/c', '/d/e'], '/d/e'), '/d/b');
expect(f(list, list, '/d/a'), '');
});
test('지금 줄이 남아 있거나 없으면 그대로 (null)', () {
expect(f(list, ['/d/b'], '/d/a'), isNull);
expect(f(list, ['/d/b'], null), isNull);
});
test('지금 줄이 지운 폴더 안에 있었으면 그 폴더 줄의 다음', () {
expect(f(list, ['/d/b'], '/d/b/inner.txt'), '/d/c');
});
}