| Index: pkg/docgen/test/multi_library_test.dart
|
| diff --git a/pkg/docgen/test/multi_library_test.dart b/pkg/docgen/test/multi_library_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1346de8a6d5d5028a46e2578cbdde46dd1aae153
|
| --- /dev/null
|
| +++ b/pkg/docgen/test/multi_library_test.dart
|
| @@ -0,0 +1,174 @@
|
| +library single_library_test;
|
| +
|
| +import 'dart:io';
|
| +
|
| +import 'package:path/path.dart' as path;
|
| +import 'package:unittest/unittest.dart';
|
| +
|
| +import '../lib/docgen.dart';
|
| +
|
| +const String DART_LIBRARY_1 = '''
|
| + library testLib;
|
| + import 'temp2.dart';
|
| + import 'temp3.dart';
|
| + export 'temp2.dart';
|
| + export 'temp3.dart';
|
| +
|
| + /**
|
| + * Doc comment for class [A].
|
| + *
|
| + * Multiline Test
|
| + */
|
| + /*
|
| + * Normal comment for class A.
|
| + */
|
| + class A {
|
| +
|
| + int _someNumber;
|
| +
|
| + A() {
|
| + _someNumber = 12;
|
| + }
|
| +
|
| + A.customConstructor();
|
| +
|
| + /**
|
| + * Test for linking to parameter [A]
|
| + */
|
| + void doThis(int A) {
|
| + print(A);
|
| + }
|
| + }
|
| +''';
|
| +
|
| +const String DART_LIBRARY_2 = '''
|
| + library testLib2.foo;
|
| + import 'temp.dart';
|
| +
|
| + /**
|
| + * Doc comment for class [B].
|
| + *
|
| + * Multiline Test
|
| + */
|
| +
|
| + /*
|
| + * Normal comment for class B.
|
| + */
|
| + class B extends A {
|
| +
|
| + B();
|
| + B.fooBar();
|
| +
|
| + /**
|
| + * Test for linking to super
|
| + */
|
| + int doElse(int b) {
|
| + print(b);
|
| + }
|
| +
|
| + /**
|
| + * Test for linking to parameter [c]
|
| + */
|
| + void doThis(int c) {
|
| + print(a);
|
| + }
|
| + }
|
| +
|
| + int testFunc(int a) {
|
| + }
|
| +''';
|
| +
|
| +const String DART_LIBRARY_3 = '''
|
| + library testLib.bar;
|
| + import 'temp.dart';
|
| +
|
| + /*
|
| + * Normal comment for class C.
|
| + */
|
| + class C {
|
| + }
|
| +''';
|
| +
|
| +Directory TEMP_DIRNAME;
|
| +
|
| +List writeLibFiles() {
|
| + TEMP_DIRNAME = Directory.systemTemp.createTempSync('single_library_');
|
| + var fileName = path.join(TEMP_DIRNAME.path, 'temp.dart');
|
| + var file = new File(fileName);
|
| + file.writeAsStringSync(DART_LIBRARY_1);
|
| +
|
| + var fileName2 = path.join(TEMP_DIRNAME.path, 'temp2.dart');
|
| + file = new File(fileName2);
|
| + file.writeAsStringSync(DART_LIBRARY_2);
|
| +
|
| + var fileName3 = path.join(TEMP_DIRNAME.path, 'temp3.dart');
|
| + file = new File(fileName3);
|
| + file.writeAsStringSync(DART_LIBRARY_3);
|
| + return [new Uri.file(fileName), new Uri.file(fileName3),
|
| + new Uri.file(fileName3)];
|
| +}
|
| +
|
| +main() {
|
| + group('Generate docs for', () {
|
| + test('multiple libraries.', () {
|
| + var files = writeLibFiles();
|
| + getMirrorSystem(files)
|
| + .then(expectAsync1((mirrorSystem) {
|
| + var testLibraryUri = files[0];
|
| + var library = new Library(mirrorSystem.libraries[testLibraryUri]);
|
| +
|
| + /// Testing fixReference
|
| + // Testing Doc comment for class [B].
|
| + var libraryMirror = mirrorSystem.libraries[testLibraryUri];
|
| + var classDocComment = library.fixReference('B').children.first.text;
|
| + expect(classDocComment, 'testLib.B');
|
| +
|
| + // Test for linking to parameter [c]
|
| + var importedLib = libraryMirror.libraryDependencies.firstWhere(
|
| + (dep) => dep.isImport).targetLibrary;
|
| + var aClassMirror = importedLib.classes.values.first;
|
| + expect(aClassMirror.qualifiedName, 'testLib2.foo.B');
|
| + var exportedClass = getDocgenObject(aClassMirror, library);
|
| + expect(exportedClass is Class, isTrue);
|
| +
|
| +
|
| + var method = exportedClass.methods['doThis'];
|
| + expect(method is Method, isTrue);
|
| + var methodParameterDocComment = method.fixReference(
|
| + 'c').children.first.text;
|
| + expect(methodParameterDocComment, 'testLib.B.doThis.c');
|
| +
|
| +
|
| + expect(method.fixReference('A').children.first.text, 'testLib.A');
|
| + // Testing trying to refer to doThis function
|
| + expect(method.fixReference('doThis').children.first.text,
|
| + 'testLib.B.doThis');
|
| +
|
| + // Testing trying to refer to doThis function
|
| + expect(method.fixReference('doElse').children.first.text,
|
| + 'testLib.B.doElse');
|
| +
|
| +
|
| + // Test a third library referencing another exported library in a
|
| + // separate file.
|
| + importedLib = libraryMirror.libraryDependencies.firstWhere(
|
| + (dep) => dep.isImport && dep.targetLibrary.qualifiedName ==
|
| + 'testLib.bar').targetLibrary;
|
| + aClassMirror = importedLib.classes.values.first;
|
| + expect(aClassMirror.qualifiedName, 'testLib.bar.C');
|
| + exportedClass = getDocgenObject(aClassMirror, library);
|
| + expect(exportedClass is Class, isTrue);
|
| + expect(exportedClass.docName, 'testLib.C');
|
| +
|
| + methodParameterDocComment = exportedClass.fixReference(
|
| + 'B').children.first.text;
|
| + expect(methodParameterDocComment, 'testLib.B');
|
| +
|
| + methodParameterDocComment = exportedClass.fixReference(
|
| + 'testFunc').children.first.text;
|
| + expect(methodParameterDocComment, 'testLib.testFunc');
|
| +
|
| + })).whenComplete(() => TEMP_DIRNAME.deleteSync(recursive: true));
|
| + });
|
| + });
|
| +}
|
|
|