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 shown, List 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'); }); }