blob: b69e8579b854ae4ca606e20005204a22bd4d3bd5 [file] [log] [blame]
// Copyright (c) 2012, 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:markdown/src/util.dart';
import 'package:test/test.dart';
void main() {
group('String.toLines()', () {
test('a single line without a line ending', () {
const text = 'Foo';
final lines = text.toLines();
expect(lines.map((e) => e.toMap()), [
{'content': 'Foo', 'isBlankLine': false},
]);
});
test('a single line with a line ending', () {
const text = 'Foo\n';
final lines = text.toLines();
expect(lines.map((e) => e.toMap()), [
{'content': 'Foo', 'isBlankLine': false},
]);
});
test('multiple lines with a blank line in between', () {
const text = 'Foo\r\n\nBar';
final lines = text.toLines();
expect(lines.map((e) => e.toMap()), [
{'content': 'Foo', 'isBlankLine': false},
{'content': '', 'isBlankLine': true},
{'content': 'Bar', 'isBlankLine': false},
]);
});
});
group('String.indentation()', () {
test('only spaces', () {
expect(' '.indentation(), 3);
expect(' '.indentation(), 4);
expect(' '.indentation(), 5);
});
test('spaces and tabs', () {
expect('\t '.indentation(), 6);
expect(' \t '.indentation(), 5);
expect(' \t'.indentation(), 4);
expect('\t\t '.indentation(), 10);
expect(' \t\t '.indentation(), 9);
expect(' \t\t'.indentation(), 8);
});
test('spaces, tabs and non whitespace characters', () {
expect('\t foo'.indentation(), 6);
expect(' \t foo'.indentation(), 5);
expect(' \tfoo'.indentation(), 4);
});
});
}
extension on Line {
Map<String, dynamic> toMap() => {
'content': content,
'isBlankLine': isBlankLine,
if (tabRemaining != null) 'tabRemaining': tabRemaining,
};
}