package org.jabref.logic.layout.format;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
public class WrapFileLinksTest {
private WrapFileLinks formatter;
@Before
public void setUp() {
FileLinkPreferences preferences = new FileLinkPreferences(Collections.emptyList(), Collections.emptyList());
formatter = new WrapFileLinks(preferences);
}
@Test
public void testEmpty() {
assertEquals("", formatter.format(""));
}
@Test
public void testNull() {
assertEquals("", formatter.format(null));
}
@Test(expected = NullPointerException.class)
public void testNoFormatSetNonEmptyString() {
formatter.format("test.pdf");
fail();
}
@Test
public void testFileExtension() {
formatter.setArgument("\\x");
assertEquals("pdf", formatter.format("test.pdf"));
}
@Test
public void testFileExtensionNoExtension() {
formatter.setArgument("\\x");
assertEquals("", formatter.format("test"));
}
@Test
public void testPlainTextString() {
formatter.setArgument("x");
assertEquals("x", formatter.format("test.pdf"));
}
@Test
public void testDescription() {
formatter.setArgument("\\d");
assertEquals("Test file", formatter.format("Test file:test.pdf:PDF"));
}
@Test
public void testDescriptionNoDescription() {
formatter.setArgument("\\d");
assertEquals("", formatter.format("test.pdf"));
}
@Test
public void testType() {
formatter.setArgument("\\f");
assertEquals("PDF", formatter.format("Test file:test.pdf:PDF"));
}
@Test
public void testTypeNoType() {
formatter.setArgument("\\f");
assertEquals("", formatter.format("test.pdf"));
}
@Test
public void testIterator() {
formatter.setArgument("\\i");
assertEquals("1", formatter.format("Test file:test.pdf:PDF"));
}
@Test
public void testIteratorTwoItems() {
formatter.setArgument("\\i\n");
assertEquals("1\n2\n", formatter.format("Test file:test.pdf:PDF;test2.pdf"));
}
@Test
public void testEndingBracket() {
formatter.setArgument("(\\d)");
assertEquals("(Test file)", formatter.format("Test file:test.pdf:PDF"));
}
@Test
public void testPath() throws IOException {
FileLinkPreferences preferences = new FileLinkPreferences(Collections.emptyList(),
Collections.singletonList("src/test/resources/pdfs/"));
formatter = new WrapFileLinks(preferences);
formatter.setArgument("\\p");
assertEquals(new File("src/test/resources/pdfs/encrypted.pdf").getCanonicalPath(),
formatter.format("Preferences:encrypted.pdf:PDF"));
}
@Test
public void testPathFallBackToGeneratedDir() throws IOException {
FileLinkPreferences preferences = new FileLinkPreferences(Collections.singletonList("src/test/resources/pdfs/"),
Collections.emptyList());
formatter = new WrapFileLinks(preferences);
formatter.setArgument("\\p");
assertEquals(new File("src/test/resources/pdfs/encrypted.pdf").getCanonicalPath(),
formatter.format("Preferences:encrypted.pdf:PDF"));
}
@Test
public void testPathReturnsRelativePathIfNotFound() {
FileLinkPreferences preferences = new FileLinkPreferences(Collections.emptyList(),
Collections.singletonList("src/test/resources/pdfs/"));
formatter = new WrapFileLinks(preferences);
formatter.setArgument("\\p");
assertEquals("test.pdf", formatter.format("Preferences:test.pdf:PDF"));
}
@Test
public void testRelativePath() {
formatter.setArgument("\\r");
assertEquals("test.pdf", formatter.format("Test file:test.pdf:PDF"));
}
}