import 'package:path/path.dart';
import 'package:test/test.dart';
import 'package:ddouble/helper.dart';
import 'package:ddouble/double_finder.dart';
void main(){
final baseDirectory = init();
final txtFilePattern = join(baseDirectory, '*.txt');
DoubleFinder.storeResult = true;
test('standard', ()
{
final finder = DoubleFinder.execute(['-V', '4', baseDirectory]);
expect(finder, isNotNull);
expect(finder.lines.length, 2);
expect(finder.lines[0], matches(RegExp(r'\S+text4.txt = \S+text3.txt size: 54')));
expect(finder.lines[1], matches(RegExp(r'\S+text6.txt = \S+text3.txt size: 54')));
});
}
String init() {
final content1 = '12345789_12345789_12345789_12345789_12345789_1234';
final base = join(Directory.systemTemp.path, 'ddouble');
writeString(join(base, 'text1.txt'), string: content1 + 'fdklsafdslafdsafda');
writeString(join(base, 'text2.txt'), string: '333');
writeString(join(base, 'dir1', 'text3.txt'), string: content1 + '12345');
writeString(join(base, 'dir1', 'text4.txt'), string: content1 + '12345');
writeString(join(base, 'dir2', 'text5.txt'), string: content1 + 'nix');
writeString(join(base, 'dir3', 'text6.txt'), string: content1 + '12345');
return base;
}
-
DoubleFinder.storeResult = true;
Damit erreichen wir, dass die gefundenen Dupletten gespeichert werden (andernfalls würden sie mit print ausgegeben, was wir aber nicht für Tests verwenden können).
-
final finder = DoubleFinder.execute(['-V', '4', baseDirectory]);
Ausführen des Standardfalles: Suche in einem vorgegebenem Verzeichnis.
-
expect(finder.lines.length, 2);
Wir erwarten zwei Dupletten, also zwei Zeilen in der Zeilenliste.
-
expect(finder.lines[0], matches(RegExp(r'\S+text4.txt = \S+text3.txt size: 54')));
Beschreibung der ersten Duplette. Wir müssen mit einem regulären Ausdruck vergleichen, da der Pfad der Dateien plattformabhängig ist.
-
String init() {
Wegen der Übersichtlichkeit erstellen wird die Testumgebung in einer eigenen Funktion namens init
.
-
final base = join(Directory.systemTemp.path, 'ddouble');
Das Basisverzeichnis erstellen wir im Temporärordner, der je nach Plattform in c:\temp
oder /tmp/<code> liegt, der neue Verzeichnisname lautet <code>ddouble
:
-
Directory.systemTemp.path
liefert das Temporärverzeichnis (als Pfadname).
-
join()
fügt an einen Pfad einen weiteren Knoten an, definiert in der Datei helper.dart
.
-
writeString(join(base, 'text1.txt'), string: content1 + 'fdklsafdslafdsafda');
Wir schreiben in die Datei text1.txt
im Verzeichnis base
einen den Inhalt content1 + 'fdklsafdslafdsafda'
.