blob: ebc0b04e561e4299ccd2931f184c51cc8482e2d0 [file] [log] [blame]
/*
* Copyright 2013-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package com.facebook.buck.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import com.google.common.collect.ImmutableSet;
import org.junit.Test;
import java.util.regex.Pattern;
public class MoreStringsTest {
@Test
public void testIsEmpty() {
assertTrue(MoreStrings.isEmpty(""));
assertTrue(MoreStrings.isEmpty(new StringBuilder()));
assertFalse(MoreStrings.isEmpty("text"));
assertFalse(MoreStrings.isEmpty(new StringBuilder("text")));
}
@Test(expected = NullPointerException.class)
public void testIsEmptyRejectsNull() {
MoreStrings.isEmpty(null);
}
@Test
public void testWithoutSuffix() {
assertEquals("abc", MoreStrings.withoutSuffix("abcdef", "def"));
assertEquals("", MoreStrings.withoutSuffix("abcdef", "abcdef"));
}
@Test
public void testCapitalize() {
assertEquals("Foo", MoreStrings.capitalize("foo"));
assertEquals("F", MoreStrings.capitalize("f"));
assertEquals("", MoreStrings.capitalize(""));
}
@Test(expected = NullPointerException.class)
public void testCapitalizeRejectsNull() {
MoreStrings.capitalize(null);
}
@Test
public void testGetLevenshteinDistance() {
assertEquals(
"The distance between '' and 'BUILD' should be 5 (e.g., 5 insertions).",
5,
MoreStrings.getLevenshteinDistance("", "BUILD"));
assertEquals(
"'BUILD' and 'BUILD' should be identical.",
0,
MoreStrings.getLevenshteinDistance("BUILD", "BUILD"));
assertEquals(
"The distance between 'BIULD' and 'BUILD' should be 2 (e.g., 1 deletion + 1 insertion).",
2,
MoreStrings.getLevenshteinDistance("BIULD", "BUILD"));
assertEquals(
"The distance between 'INSTALL' and 'AUDIT' should be 7 " +
"(e.g., 5 substitutions + 2 deletions).",
7,
MoreStrings.getLevenshteinDistance("INSTALL", "AUDIT"));
assertEquals(
"The distance between 'aaa' and 'bbbbbb' should be 6 " +
"(e.g., 3 substitutions + 3 insertions).",
6,
MoreStrings.getLevenshteinDistance("aaa", "bbbbbb"));
assertEquals(
"The distance between 'build' and 'biuldd' should be 3 (e.g., 1 deletion + 2 insertions).",
3,
MoreStrings.getLevenshteinDistance("build", "biuldd"));
assertEquals(
"The distance between 'test' and 'tset' should be 2 (e.g., 1 deletion + 1 insertion).",
2,
MoreStrings.getLevenshteinDistance("test", "tset"));
}
@Test
public void testRegexPatternForAny() {
Pattern varArgTestPattern = Pattern.compile(MoreStrings.regexPatternForAny("foo", "bar"));
assertTrue(varArgTestPattern.matcher("bar").matches());
assertTrue(varArgTestPattern.matcher("foo").matches());
assertFalse(varArgTestPattern.matcher("mehfoo").matches());
Pattern iterabeArgTestPattern = Pattern.compile(
".*" + MoreStrings.regexPatternForAny(ImmutableSet.of("raz", "meh")) + "$");
assertTrue(iterabeArgTestPattern.matcher("hello raz").matches());
assertTrue(iterabeArgTestPattern.matcher("hello meh").matches());
assertFalse(iterabeArgTestPattern.matcher("hello meh hi").matches());
}
@Test
public void testEndsWithIgnoreCase() {
assertTrue(MoreStrings.endsWithIgnoreCase("string.suffix", ".suffix"));
assertTrue(MoreStrings.endsWithIgnoreCase("string.suffix", ".SUFFIX"));
assertTrue(MoreStrings.endsWithIgnoreCase("string.SUFFIX", ".suffix"));
assertTrue(MoreStrings.endsWithIgnoreCase("string.SUFFIX", ".SUFFIX"));
assertTrue(MoreStrings.endsWithIgnoreCase("StrINg.SufFIx", ".SUffIX"));
assertTrue(MoreStrings.endsWithIgnoreCase("string", "string"));
assertTrue(MoreStrings.endsWithIgnoreCase("StRiNg", "STriNG"));
assertTrue(MoreStrings.endsWithIgnoreCase("", ""));
assertTrue(MoreStrings.endsWithIgnoreCase("string", ""));
assertFalse(MoreStrings.endsWithIgnoreCase("string.something", ".suffix"));
assertFalse(MoreStrings.endsWithIgnoreCase("string", "strin"));
assertFalse(MoreStrings.endsWithIgnoreCase("strin", "string"));
}
}