/* * 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 java.util.regex.Pattern; import org.junit.Test; 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")); } }