blob: a76178ef59109da9610eaad0728546c6736e131c [file] [log] [blame]
// Copyright (c) 2014, 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.
@TestOn('vm')
library;
import 'package:dart_style/src/string_compare.dart';
import 'package:test/test.dart';
void main() {
test('whitespace at end of string', () {
expect(equalIgnoringWhitespace('foo bar\n', 'foo bar'), isTrue);
expect(equalIgnoringWhitespace('foo bar', 'foo bar\n'), isTrue);
expect(equalIgnoringWhitespace('foo bar \n', 'foo bar'), isTrue);
expect(equalIgnoringWhitespace('foo bar', 'foo bar \n'), isTrue);
});
test('whitespace at start of string', () {
expect(equalIgnoringWhitespace('\nfoo bar', 'foo bar'), isTrue);
expect(equalIgnoringWhitespace('\n foo bar', 'foo bar'), isTrue);
expect(equalIgnoringWhitespace('foo bar', '\nfoo bar'), isTrue);
expect(equalIgnoringWhitespace('foo bar', '\n foo bar'), isTrue);
});
test('whitespace in the middle of string', () {
expect(equalIgnoringWhitespace('foobar', 'foo bar'), isTrue);
expect(equalIgnoringWhitespace('foo bar', 'foobar'), isTrue);
expect(equalIgnoringWhitespace('foo\tbar', 'foobar'), isTrue);
expect(equalIgnoringWhitespace('foobar', 'foo\tbar'), isTrue);
expect(equalIgnoringWhitespace('foo\nbar', 'foobar'), isTrue);
expect(equalIgnoringWhitespace('foobar', 'foo\nbar'), isTrue);
});
test('identical strings', () {
expect(equalIgnoringWhitespace('foo bar', 'foo bar'), isTrue);
expect(equalIgnoringWhitespace('', ''), isTrue);
});
test('test unicode whitespace characters', () {
// The formatter strips all Unicode whitespace characters from the end of
// comment lines, so treat those as whitespace too.
var whitespaceRunes = [
0x0020,
0x0085,
0x00a0,
0x2000,
0x200a,
0x2028,
0x2029,
0x202f,
0x205f,
0x3000,
0xfeff
];
for (var rune in whitespaceRunes) {
expect(
equalIgnoringWhitespace(
'foo${String.fromCharCode(rune)}bar', 'foo bar'),
isTrue);
}
});
test('different strings', () {
expect(equalIgnoringWhitespace('foo bar', 'Foo bar'), isFalse);
expect(equalIgnoringWhitespace('foo bar', 'foo bars'), isFalse);
expect(equalIgnoringWhitespace('foo bars', 'foo bar'), isFalse);
expect(equalIgnoringWhitespace('oo bar', 'foo bar'), isFalse);
expect(equalIgnoringWhitespace('', 'foo bar'), isFalse);
expect(equalIgnoringWhitespace('foo bar', ''), isFalse);
});
test('ignore differences from commas', () {
expect(equalIgnoringWhitespace('fn(a,)', 'fn(a)'), isTrue);
expect(equalIgnoringWhitespace('a,b,,,c,,,,', 'abc'), isTrue);
expect(equalIgnoringWhitespace('a,b,,,c,,,,', 'cba'), isFalse);
});
test('ignore differences from "[" and "]"', () {
expect(equalIgnoringWhitespace('f([a]/* c */)', 'f([a /* c */])'), isTrue);
expect(equalIgnoringWhitespace('f(/* c */[a])', 'f([/* c */ a])'), isTrue);
expect(equalIgnoringWhitespace('a]b][c][[]', 'abc'), isTrue);
expect(equalIgnoringWhitespace('a]b][c][[]', 'cba'), isFalse);
});
test('ignore differences from "{" and "}"', () {
expect(equalIgnoringWhitespace('f({a}/* c */)', 'f({a /* c */})'), isTrue);
expect(equalIgnoringWhitespace('f(/* c */{a})', 'f({/* c */ a})'), isTrue);
expect(equalIgnoringWhitespace('a}b}{c}{{}', 'abc'), isTrue);
expect(equalIgnoringWhitespace('a}b}{c}{{}', 'cba'), isFalse);
});
test('ignore differences from ";"', () {
expect(equalIgnoringWhitespace('enum E { a; }', 'enum E { a }'), isTrue);
expect(equalIgnoringWhitespace('a;b;;c;;', 'abc'), isTrue);
expect(equalIgnoringWhitespace('a;b;c;;', 'cba'), isFalse);
});
}