JJ_MKVMaker/test/lan_scan_test.dart

24 lines
1.2 KiB
Dart

import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:jj_mkvmaker/core/lan_scan.dart';
/// X-plore 비교 j: 같은 망 SMB 서버 찾기의 포트 훑기 (실제 망 대신 이 기기의 열린 · 닫힌 포트로)
void main() {
test('열린 포트만 찾는다 · 순서는 넣은 대로 · 진행 · 취소', () async {
final server = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0);
addTearDown(server.close);
server.listen((s) => s.destroy());
final closed = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0);
final closedPort = closed.port;
await closed.close();
var progress = 0;
final found = await scanPort(['127.0.0.1', '127.0.0.2'], port: server.port, lookupNames: false, onProgress: (d, _) => progress = d);
expect(found.map((h) => h.address), ['127.0.0.1'], reason: '127.0.0.2 는 듣지 않음 (Windows 는 127.0.0.1 에만 묶임)');
expect(progress, 2);
expect(await scanPort(['127.0.0.1'], port: closedPort, lookupNames: false), isEmpty);
expect(await scanPort(['127.0.0.1'], port: server.port, lookupNames: false, cancelled: () => true), isEmpty, reason: '취소');
expect((await localPrivateIPv4()).every((a) => !a.isLoopback), isTrue);
});
}