blob: 05f4cfd3e539567913cce643b0d930c1a6cbaa20 [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/dartdoc/dartdoc_directive_info.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(DartdocDirectiveInfoTest);
});
}
@reflectiveTest
class DartdocDirectiveInfoTest {
DartdocDirectiveInfo info = DartdocDirectiveInfo();
test_processDartdoc_animation_directive() {
var result = info.processDartdoc('''
/// {@animation 464 192 https://flutter.github.io/assets-for-api-docs/assets/animation/curve_bounce_in.mp4}
''');
expect(
result.full,
'[flutter.github.io/assets-for-api-docs/assets/animation/curve_bounce_in.mp4]'
'(https://flutter.github.io/assets-for-api-docs/assets/animation/curve_bounce_in.mp4)');
}
test_processDartdoc_macro_defined() {
info.extractTemplate('''
/**
* {@template foo}
* Body of the
* template.
* {@endtemplate}
*/''');
var result = info.processDartdoc('''
/**
* Before macro.
* {@macro foo}
* After macro.
*/''');
expect(result.full, '''
Before macro.
Body of the
template.
After macro.''');
}
test_processDartdoc_macro_undefined() {
var result = info.processDartdoc('''
/**
* {@macro foo}
*/''');
expect(result.full, '''
{@macro foo}''');
}
test_processDartdoc_multiple() {
info.extractTemplate('''
/**
* {@template foo}
* First template.
* {@endtemplate}
*/''');
info.extractTemplate('''
/// {@template bar}
/// Second template.
/// {@endtemplate}''');
var result = info.processDartdoc('''
/**
* Before macro.
* {@macro foo}
* Between macros.
* {@macro bar}
* After macro.
*/''');
expect(result.full, '''
Before macro.
First template.
Between macros.
Second template.
After macro.''');
}
test_processDartdoc_noMacro() {
var result = info.processDartdoc('''
/**
* Comment without a macro.
*/''');
expect(result.full, '''
Comment without a macro.''');
}
test_processDartdoc_summary_different() {
var result = info.processDartdoc('''
/// Comment without a macro.
///
/// Has content after summary.
''', includeSummary: true) as DocumentationWithSummary;
expect(result.full, '''
Comment without a macro.
Has content after summary.''');
expect(result.summary, '''
Comment without a macro.''');
}
test_processDartdoc_summary_same() {
var result = info.processDartdoc('''
/// Comment without a macro.
''', includeSummary: true) as DocumentationWithSummary;
expect(result.full, '''
Comment without a macro.''');
expect(result.summary, '''
Comment without a macro.''');
}
test_processDartdoc_youtube_directive() {
var result = info.processDartdoc('''
/// {@youtube 560 315 https://www.youtube.com/watch?v=2uaoEDOgk_I}
''');
expect(result.full, '''
[www.youtube.com/watch?v=2uaoEDOgk_I](https://www.youtube.com/watch?v=2uaoEDOgk_I)''');
}
test_processDartdoc_youtube_malformed() {
var result = info.processDartdoc('''
/// {@youtube 560x315 https://www.youtube.com/watch?v=2uaoEDOgk_I}
''');
expect(result.full,
'{@youtube 560x315 https://www.youtube.com/watch?v=2uaoEDOgk_I}');
}
}