blob: eae75af71d249e37375be2e78f4998e5561325ab [file] [log] [blame]
// Copyright (c) 2020, 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:analyzer/src/utilities/extensions/string.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(IterableOfStringExtensionTest);
defineReflectiveTests(StringExtensionTest);
});
}
@reflectiveTest
class IterableOfStringExtensionTest {
void test_commaSeparatedWithAnd_five() {
expect(
<String>['a', 'b', 'c', 'd', 'e'].commaSeparatedWithAnd,
'a, b, c, d, and e',
);
}
void test_commaSeparatedWithAnd_one() {
expect(<String>['a'].commaSeparatedWithAnd, 'a');
}
void test_commaSeparatedWithAnd_three() {
expect(<String>['a', 'b', 'c'].commaSeparatedWithAnd, 'a, b, and c');
}
void test_commaSeparatedWithAnd_three_iterable() {
expect(
<String>['a', 'b', 'c'].reversed.commaSeparatedWithAnd,
'c, b, and a',
);
}
void test_commaSeparatedWithAnd_two() {
expect(<String>['a', 'b'].commaSeparatedWithAnd, 'a and b');
}
void test_commaSeparatedWithAnd_zero() {
expect(<String>[].commaSeparatedWithAnd, isEmpty);
}
void test_commaSeparatedWithOr_five() {
expect(
<String>['a', 'b', 'c', 'd', 'e'].commaSeparatedWithOr,
'a, b, c, d, or e',
);
}
void test_commaSeparatedWithOr_one() {
expect(<String>['a'].commaSeparatedWithOr, 'a');
}
void test_commaSeparatedWithOr_three() {
expect(<String>['a', 'b', 'c'].commaSeparatedWithOr, 'a, b, or c');
}
void test_commaSeparatedWithOr_two() {
expect(<String>['a', 'b'].commaSeparatedWithOr, 'a or b');
}
void test_commaSeparatedWithOr_zero() {
expect(<String>[].commaSeparatedWithOr, isEmpty);
}
void test_quotedAndCommaSeparatedWithAnd_one() {
expect(<String>['a'].quotedAndCommaSeparatedWithAnd, "'a'");
}
void test_quotedAndCommaSeparatedWithAnd_three() {
expect(
<String>['a', 'b', 'c'].quotedAndCommaSeparatedWithAnd,
"'a', 'b', and 'c'",
);
}
void test_quotedAndCommaSeparatedWithAnd_two() {
expect(<String>['a', 'b'].quotedAndCommaSeparatedWithAnd, "'a' and 'b'");
}
void test_quotedAndCommaSeparatedWithAnd_zero() {
expect(<String>[].quotedAndCommaSeparatedWithAnd, isEmpty);
}
void test_quotedAndCommaSeparatedWithOr_one() {
expect(<String>['a'].quotedAndCommaSeparatedWithOr, "'a'");
}
void test_quotedAndCommaSeparatedWithOr_three() {
expect(
<String>['a', 'b', 'c'].quotedAndCommaSeparatedWithOr,
"'a', 'b', or 'c'",
);
}
void test_quotedAndCommaSeparatedWithOr_two() {
expect(<String>['a', 'b'].quotedAndCommaSeparatedWithOr, "'a' or 'b'");
}
void test_quotedAndCommaSeparatedWithOr_zero() {
expect(<String>[].quotedAndCommaSeparatedWithOr, isEmpty);
}
}
@reflectiveTest
class StringExtensionTest {
void test_elideTo() {
expect(''.elideTo(10), '');
expect('0'.elideTo(10), '0');
expect('012'.elideTo(10), '012');
expect('0123456789'.elideTo(10), '0123456789');
expect('0123456789abcd'.elideTo(10), '0123...bcd');
expect('0123456789abcde'.elideTo(10), '0123...cde');
expect('0123456789abcdef'.elideTo(10), '0123...def');
expect('0123456789abcdef'.elideTo(11), '0123...cdef');
expect('0123456789abcdef'.elideTo(12), '01234...cdef');
}
void test_ifEqualThen_equal() {
expect('foo'.ifEqualThen('foo', 'bar'), 'bar');
}
void test_ifEqualThen_notEqual() {
expect('notFoo'.ifEqualThen('foo', 'bar'), 'notFoo');
}
void test_ifNotEmptyOrElse_empty() {
expect(''.ifNotEmptyOrElse('orElse'), 'orElse');
}
void test_ifNotEmptyOrElse_notEmpty() {
expect('test'.ifNotEmptyOrElse('orElse'), 'test');
}
void test_isDigit() {
for (var c in '0123456789'.codeUnits) {
expect(c.isDigit, isTrue);
}
expect(' '.codeUnitAt(0).isDigit, isFalse);
expect('A'.codeUnitAt(0).isDigit, isFalse);
}
void test_isLetter() {
for (var c in 'abcdefghijklmnopqrstuvwxyz'.codeUnits) {
expect(c.isLetter, isTrue);
}
for (var c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.codeUnits) {
expect(c.isLetter, isTrue);
}
expect(' '.codeUnitAt(0).isLetter, isFalse);
expect('0'.codeUnitAt(0).isLetter, isFalse);
}
void test_isLetterOrDigit() {
for (var c in 'abcdefghijklmnopqrstuvwxyz'.codeUnits) {
expect(c.isLetterOrDigit, isTrue);
}
for (var c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.codeUnits) {
expect(c.isLetterOrDigit, isTrue);
}
for (var c in '0123456789'.codeUnits) {
expect(c.isLetterOrDigit, isTrue);
}
expect(' '.codeUnitAt(0).isLetterOrDigit, isFalse);
expect('.'.codeUnitAt(0).isLetterOrDigit, isFalse);
}
void test_isSpace() {
expect(' '.codeUnitAt(0).isSpace, isTrue);
expect('\t'.codeUnitAt(0).isSpace, isTrue);
expect('\r'.codeUnitAt(0).isSpace, isFalse);
expect('\n'.codeUnitAt(0).isSpace, isFalse);
expect('0'.codeUnitAt(0).isSpace, isFalse);
expect('A'.codeUnitAt(0).isSpace, isFalse);
}
void test_isWhitespace() {
expect(' '.codeUnitAt(0).isWhitespace, isTrue);
expect('\t'.codeUnitAt(0).isWhitespace, isTrue);
expect('\r'.codeUnitAt(0).isWhitespace, isTrue);
expect('\n'.codeUnitAt(0).isWhitespace, isTrue);
expect('0'.codeUnitAt(0).isWhitespace, isFalse);
expect('A'.codeUnitAt(0).isWhitespace, isFalse);
}
void test_removeSuffix() {
expect('01234'.removeSuffix(''), '01234');
expect('01234'.removeSuffix('4'), '0123');
expect('01234'.removeSuffix('34'), '012');
expect('01234'.removeSuffix('01234'), '');
expect('01234'.removeSuffix('012345'), isNull);
expect('01234'.removeSuffix('5'), isNull);
}
}