| // 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); |
| }); |
| } |