/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ac.simons;
import ac.simons.autolinker.Strings;
import java.util.Optional;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.*;
/**
* @author Michael J. Simons, 2015-04-01
*/
public class StringsTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
public void truncateShouldWork1() {
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("Cannot truncate string to length < 0");
Strings.truncate("abc", -1);
}
@Test
public void truncateShouldWork2() {
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("Cannot truncate string to length < 0");
Strings.truncate("abc", 1, Optional.of("..."));
}
@Test
public void truncateShouldWork3() {
String in;
String expected;
in = "1";
expected = "";
assertEquals(expected, Strings.truncate(in, 0, Optional.empty()));
in = "abc";
expected = "…";
assertEquals(expected, Strings.truncate(in, 1, Optional.of("…")));
// Copied from
// https://raw.githubusercontent.com/google/guava/master/guava-tests/test/com/google/common/base/AsciiTest.java
assertEquals("foobar", Strings.truncate("foobar", 10, Optional.of("...")));
assertEquals("fo...", Strings.truncate("foobar", 5, Optional.of("...")));
assertEquals("foobar", Strings.truncate("foobar", 6, Optional.of("...")));
assertEquals("...", Strings.truncate("foobar", 3, Optional.of("...")));
assertEquals("foobar", Strings.truncate("foobar", 10, Optional.of("…")));
assertEquals("foo…", Strings.truncate("foobar", 4, Optional.of("…")));
assertEquals("fo--", Strings.truncate("foobar", 4, Optional.of("--")));
assertEquals("foobar", Strings.truncate("foobar", 6, Optional.of("…")));
assertEquals("foob…", Strings.truncate("foobar", 5, Optional.of("…")));
assertEquals("foo", Strings.truncate("foobar", 3, Optional.of("")));
assertEquals("", Strings.truncate("", 5, Optional.of("")));
assertEquals("", Strings.truncate("", 5, Optional.of("...")));
assertEquals("", Strings.truncate("", 0, Optional.of("")));
// Naive would split the surrogate pair
assertEquals("12👍…", Strings.truncate("12👍45", 4, Optional.of("…")));
}
}