33 lines
1.4 KiB
Dart
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');
|
|
});
|
|
}
|