| Index: tools/html_json_doc/test/html_json_doc_test.dart
|
| diff --git a/tools/html_json_doc/test/html_json_doc_test.dart b/tools/html_json_doc/test/html_json_doc_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4d721dcc9fd2db7720105978c5d1d98f1ececec9
|
| --- /dev/null
|
| +++ b/tools/html_json_doc/test/html_json_doc_test.dart
|
| @@ -0,0 +1,103 @@
|
| +import '../../../pkg/unittest/lib/unittest.dart';
|
| +import '../lib/html_to_json.dart' as html_to_json;
|
| +import '../lib/json_to_html.dart' as json_to_html;
|
| +import 'dart:json';
|
| +import 'dart:io';
|
| +
|
| +void main() {
|
| + var scriptPath = new Path(new Options().script).directoryPath.toString();
|
| +
|
| + test('HTML Doc to JSON', () {
|
| + var htmlPath = new Path('$scriptPath/test_data/html_to_json');
|
| + var jsonPath = new Path('$scriptPath/test_output/html_to_json_test.json');
|
| +
|
| + var convertFuture = html_to_json.convert(htmlPath, jsonPath);
|
| +
|
| + convertFuture.then(expectAsync1((anyErrors) {
|
| + var output = new File.fromPath(jsonPath);
|
| +
|
| + var goldenFile = new File(
|
| + '$scriptPath/test_data/html_to_json/'
|
| + 'html_to_json_test_golden_output.json');
|
| +
|
| + expect(anyErrors, false, reason:'The conversion completed with errors.');
|
| + expect(output.readAsStringSync(), goldenFile.readAsStringSync());
|
| + }));
|
| + });
|
| +
|
| + test('JSON to HTML Doc', () {
|
| + var preHtmlPath = new Path('$scriptPath/test_data/json_to_html');
|
| + var goldenHtmlPath = new Path('$scriptPath/test_data/html_to_json');
|
| + var htmlPath = new Path('$scriptPath/test_output');
|
| + var jsonPath = new Path('$scriptPath/test_output/html_to_json_test.json');
|
| +
|
| + var copyFuture = _copyFiles(preHtmlPath, htmlPath);
|
| +
|
| + copyFuture.then(expectAsync1((_) {
|
| + var convertFuture = json_to_html.convert(htmlPath, jsonPath);
|
| +
|
| + convertFuture.then((anyErrors) {
|
| + expect(anyErrors, false,
|
| + reason:'The conversion completed with errors.');
|
| +
|
| + _compareFilesInDirectories(goldenHtmlPath, htmlPath);
|
| +
|
| + });
|
| + }));
|
| + });
|
| +}
|
| +
|
| +void _compareFilesInDirectories(Path path1, Path path2) {
|
| + final dir1 = new Directory.fromPath(path1);
|
| + final dir2 = new Directory.fromPath(path2);
|
| + final lister1 = dir1.list(recursive: false);
|
| + final lister2 = dir2.list(recursive: false);
|
| +
|
| + // True once one of the listers is finished.
|
| + var oneFinished = false;
|
| +
|
| + var list1 = <String, File>{};
|
| +
|
| + lister1.onFile = (String path) {
|
| + if (path.endsWith('.dart')) {
|
| + list1.putIfAbsent(new Path(path).filename, () => new File(path));
|
| + }
|
| + };
|
| +
|
| + lister1.onDone = (_) {
|
| + lister2.onFile = (String path) {
|
| + if (path.endsWith('.dart')) {
|
| + expect(list1[new Path(path).filename].readAsStringSync(),
|
| + new File(path).readAsStringSync());
|
| + }
|
| + };
|
| + };
|
| +}
|
| +
|
| +Future _copyFiles(Path fromDir, Path toDir) {
|
| + // First copy the files into a new place to keep the old files.
|
| + final completer = new Completer();
|
| + final htmlDir = new Directory.fromPath(fromDir);
|
| + final lister = htmlDir.list(recursive: false);
|
| +
|
| + lister.onFile = (String path) {
|
| + final name = new Path.fromNative(path).filename;
|
| +
|
| + // Ignore private classes.
|
| + if (name.startsWith('_')) return;
|
| +
|
| + // Ignore non-dart files.
|
| + if (!name.endsWith('.dart')) return;
|
| +
|
| + File file = new File(path);
|
| + File newFile = new File.fromPath(toDir.append(name));
|
| +
|
| + var outputStream = newFile.openOutputStream();
|
| + outputStream.writeString(file.readAsStringSync());
|
| + };
|
| +
|
| + lister.onDone = (_) {
|
| + completer.complete(null);
|
| + };
|
| + return completer.future;
|
| +}
|
|
|