Datei double_finder_test.dart - flutter-tutorial-de/dart-programming GitHub Wiki

Links

Der Quellcode

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'.
⚠️ **GitHub.com Fallback** ⚠️