blob: 25f9aa7cb01d8ba4954a5467d19b659d1bd47856 [file] [log] [blame]
import 'package:unittest/unittest.dart';
import 'package:mustache/src/scanner2.dart';
main() {
group('Scanner', () {
test('scan text', () {
var source = 'abc';
var scanner = new Scanner(source, 'foo', '{{ }}', lenient: false);
var tokens = scanner.scan();
expect(tokens, orderedEquals([
new Token(TokenType.text, 'abc', 0, 3),
]));
});
test('scan tag', () {
var source = 'abc{{foo}}def';
var scanner = new Scanner(source, 'foo', '{{ }}', lenient: false);
var tokens = scanner.scan();
expect(tokens, orderedEquals([
new Token(TokenType.text, 'abc', 0, 3),
new Token(TokenType.openDelimiter, '{{', 3, 5),
new Token(TokenType.identifier, 'foo', 5, 8),
new Token(TokenType.closeDelimiter, '}}', 8, 10),
new Token(TokenType.text, 'def', 10, 13)
]));
});
test('scan tag whitespace', () {
var source = 'abc{{ foo }}def';
var scanner = new Scanner(source, 'foo', '{{ }}', lenient: false);
var tokens = scanner.scan();
expect(tokens, orderedEquals([
new Token(TokenType.text, 'abc', 0, 3),
new Token(TokenType.openDelimiter, '{{', 3, 5),
new Token(TokenType.whitespace, ' ', 5, 6),
new Token(TokenType.identifier, 'foo', 6, 9),
new Token(TokenType.whitespace, ' ', 9, 10),
new Token(TokenType.closeDelimiter, '}}', 10, 12),
new Token(TokenType.text, 'def', 12, 15)
]));
});
test('scan tag sigil', () {
var source = 'abc{{ # foo }}def';
var scanner = new Scanner(source, 'foo', '{{ }}', lenient: false);
var tokens = scanner.scan();
expect(tokens, orderedEquals([
new Token(TokenType.text, 'abc', 0, 3),
new Token(TokenType.openDelimiter, '{{', 3, 5),
new Token(TokenType.whitespace, ' ', 5, 6),
new Token(TokenType.sigil, '#', 6, 7),
new Token(TokenType.whitespace, ' ', 7, 8),
new Token(TokenType.identifier, 'foo', 8, 11),
new Token(TokenType.whitespace, ' ', 11, 12),
new Token(TokenType.closeDelimiter, '}}', 12, 14),
new Token(TokenType.text, 'def', 14, 17)
]));
});
test('scan tag dot', () {
var source = 'abc{{ foo.bar }}def';
var scanner = new Scanner(source, 'foo', '{{ }}', lenient: false);
var tokens = scanner.scan();
expect(tokens, orderedEquals([
new Token(TokenType.text, 'abc', 0, 3),
new Token(TokenType.openDelimiter, '{{', 3, 5),
new Token(TokenType.whitespace, ' ', 5, 6),
new Token(TokenType.identifier, 'foo', 6, 9),
new Token(TokenType.dot, '.', 9, 10),
new Token(TokenType.identifier, 'bar', 10, 13),
new Token(TokenType.whitespace, ' ', 13, 14),
new Token(TokenType.closeDelimiter, '}}', 14, 16),
new Token(TokenType.text, 'def', 16, 19)
]));
});
test('scan triple mustache', () {
var source = 'abc{{{foo}}}def';
var scanner = new Scanner(source, 'foo', '{{ }}', lenient: false);
var tokens = scanner.scan();
expect(tokens, orderedEquals([
new Token(TokenType.text, 'abc', 0, 3),
new Token(TokenType.openTripleMustache, '{{{', 3, 6),
new Token(TokenType.identifier, 'foo', 6, 9),
new Token(TokenType.closeTripleMustache, '}}}', 9, 12),
new Token(TokenType.text, 'def', 12, 15)
]));
});
test('scan triple mustache whitespace', () {
var source = 'abc{{{ foo }}}def';
var scanner = new Scanner(source, 'foo', '{{ }}', lenient: false);
var tokens = scanner.scan();
expect(tokens, orderedEquals([
new Token(TokenType.text, 'abc', 0, 3),
new Token(TokenType.openTripleMustache, '{{{', 3, 6),
new Token(TokenType.whitespace, ' ', 6, 7),
new Token(TokenType.identifier, 'foo', 7, 10),
new Token(TokenType.whitespace, ' ', 10, 11),
new Token(TokenType.closeTripleMustache, '}}}', 11, 14),
new Token(TokenType.text, 'def', 14, 17)
]));
});
});
}