| // Copyright (c) 2022, 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:markdown/markdown.dart'; | |
| import 'package:test/test.dart'; | |
| void main() { | |
| group('markdownToHtml', () { | |
| const text = '# Hello **Markdown<em>!</em>**\n***'; | |
| test('with no syntaxes', () { | |
| final result = markdownToHtml( | |
| text, | |
| withDefaultBlockSyntaxes: false, | |
| withDefaultInlineSyntaxes: false, | |
| encodeHtml: false, | |
| ); | |
| expect(result, equals('# Hello **Markdown<em>!</em>**\n***\n')); | |
| }); | |
| test('with no default syntaxes but with custom syntaxes', () { | |
| final result = markdownToHtml( | |
| text, | |
| withDefaultBlockSyntaxes: false, | |
| withDefaultInlineSyntaxes: false, | |
| encodeHtml: false, | |
| blockSyntaxes: [const HorizontalRuleSyntax()], | |
| inlineSyntaxes: [EmphasisSyntax.asterisk()], | |
| ); | |
| expect( | |
| result, | |
| equals('# Hello <strong>Markdown<em>!</em></strong>\n<hr />\n'), | |
| ); | |
| }); | |
| test('with only default block syntaxes', () { | |
| final result = markdownToHtml( | |
| text, | |
| withDefaultInlineSyntaxes: false, | |
| encodeHtml: false, | |
| ); | |
| expect(result, equals('<h1>Hello **Markdown<em>!</em>**</h1>\n<hr />\n')); | |
| }); | |
| test('with only default inline syntaxes', () { | |
| final result = markdownToHtml( | |
| text, | |
| withDefaultBlockSyntaxes: false, | |
| encodeHtml: false, | |
| ); | |
| expect( | |
| result, | |
| equals('# Hello <strong>Markdown<em>!</em></strong>\n***\n'), | |
| ); | |
| }); | |
| test('with no default syntaxes but with encodeHtml enabled', () { | |
| final result = markdownToHtml( | |
| text, | |
| withDefaultBlockSyntaxes: false, | |
| withDefaultInlineSyntaxes: false, | |
| ); | |
| expect( | |
| result, | |
| equals('# Hello **Markdown<em>!</em>**\n***\n'), | |
| ); | |
| }); | |
| }); | |
| group('test InlineSyntax caseSensitive parameter', () { | |
| const text = 'one BREAK two'; | |
| test('with caseSensitive enabled', () { | |
| final result = markdownToHtml( | |
| text, | |
| inlineOnly: true, | |
| inlineSyntaxes: [_BreakSyntax(true)], | |
| ); | |
| expect(result, equals('one BREAK two')); | |
| }); | |
| test('with caseSensitive disabled', () { | |
| final result = markdownToHtml( | |
| text, | |
| inlineOnly: true, | |
| inlineSyntaxes: [_BreakSyntax(false)], | |
| ); | |
| expect(result, equals('one <break /> two')); | |
| }); | |
| }); | |
| } | |
| class _BreakSyntax extends InlineSyntax { | |
| _BreakSyntax(bool caseSensitive) | |
| : super('break', caseSensitive: caseSensitive); | |
| @override | |
| bool onMatch(InlineParser parser, Match match) { | |
| parser.addNode(Element.empty('break')); | |
| return true; | |
| } | |
| } |