This is an automated email from the ASF dual-hosted git repository. sgoeschl pushed a commit to branch FREEMARKER-172 in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
commit 2608564e2319f3c85a62db4dffa1d079844bf094 Author: Siegfried Goeschl <[email protected]> AuthorDate: Wed Feb 3 23:10:01 2021 +0100 FREEMARKER-172 [freemarker-generator] Start with refactoring --- .../datasource/loader/FileDataSourceLoader.java | 2 -- .../src/test/data/txt/utf16.txt | Bin 0 -> 362 bytes .../src/test/data/txt/utf8.txt | 6 +++++ .../generator/datasource/DataSourceLoaderTest.java | 27 +++++++++++++++++++-- .../datasource/DataSourcesSupplierTest.java | 25 ++++++++++--------- .../generator/datasource/DataSourcesTest.java | 1 - .../generator/file/RecursiveFileSupplierTest.java | 7 ++++-- .../generator/uri/NamedUriStringParserTest.java | 3 +++ 8 files changed, 52 insertions(+), 19 deletions(-) diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java index f76cb88..1ee8b66 100644 --- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java +++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/loader/FileDataSourceLoader.java @@ -43,8 +43,6 @@ public class FileDataSourceLoader implements DataSourceLoader { final String group = namedUri.getGroupOrElse(FreeMarkerConstants.DEFAULT_GROUP); final Charset charset = namedUri.getCharsetOrElse(UTF_8); final File file = namedUri.getFile(); - // TODO - // final String name = namedUri.getNameOrElse(UriUtils.toStringWithoutFragment(file.toURI())); final String name = namedUri.getNameOrElse(file.getName()); return DataSourceFactory.fromFile(name, group, file, charset); } diff --git a/freemarker-generator-base/src/test/data/txt/utf16.txt b/freemarker-generator-base/src/test/data/txt/utf16.txt new file mode 100755 index 0000000..6dfd2e5 Binary files /dev/null and b/freemarker-generator-base/src/test/data/txt/utf16.txt differ diff --git a/freemarker-generator-base/src/test/data/txt/utf8.txt b/freemarker-generator-base/src/test/data/txt/utf8.txt new file mode 100755 index 0000000..25f1e5c --- /dev/null +++ b/freemarker-generator-base/src/test/data/txt/utf8.txt @@ -0,0 +1,6 @@ +UTF-8 encoding +============================================================================= +première is first +première is slightly different +Кириллица is Cyrillic +𐐀 am Deseret diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java index 14a1ed9..cbe9aa1 100644 --- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java +++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java @@ -20,11 +20,13 @@ import org.apache.commons.io.FilenameUtils; import org.apache.freemarker.generator.base.datasource.DataSource; import org.apache.freemarker.generator.base.datasource.DataSourceLoader; import org.apache.freemarker.generator.base.datasource.DataSourceLoaderFactory; +import org.junit.Ignore; import org.junit.Test; import java.io.File; import static java.lang.String.format; +import static java.nio.charset.StandardCharsets.UTF_16; import static java.nio.charset.StandardCharsets.UTF_8; import static junit.framework.TestCase.assertFalse; import static org.apache.freemarker.generator.base.FreeMarkerConstants.DEFAULT_GROUP; @@ -91,7 +93,19 @@ public class DataSourceLoaderTest { } @Test - // @Ignore + public void shouldLoadDataSourceFromComplexNameFileUri() { + try (DataSource dataSource = dataSourceLoader().load("source=pom.xml#charset=UTF-8&foo=bar")) { + assertEquals("pom.xml", dataSource.getFileName()); + assertEquals("source", dataSource.getName()); + assertEquals(UTF_8, dataSource.getCharset()); + assertEquals(MIME_APPLICATION_XML, dataSource.getContentType()); + assertEquals(ANY_FILE.toURI(), dataSource.getUri()); + assertFalse(dataSource.getLines().isEmpty()); + } + } + + @Test + @Ignore public void shouldCreateDataSourceFromUrl() { try (DataSource dataSource = dataSourceLoader().load("https://jsonplaceholder.typicode.com/posts/2")) { assertEquals("https://jsonplaceholder.typicode.com/posts/2", dataSource.getName()); @@ -105,7 +119,7 @@ public class DataSourceLoaderTest { } @Test - // @Ignore + @Ignore public void shouldCreateDataSourceFromNamedURL() { try (DataSource dataSource = dataSourceLoader().load("content:www=https://www.google.com?foo=bar#contenttype=application/json")) { assertEquals("content", dataSource.getName()); @@ -152,6 +166,15 @@ public class DataSourceLoaderTest { } } + @Test + public void shouldLoadDataSourceWithCharset() { + final DataSource utf8DataSource = dataSourceLoader().load("./src/test/data/txt/utf8.txt", UTF_8); + final DataSource utf16DataSource = dataSourceLoader().load("./src/test/data/txt/utf16.txt", UTF_16); + + // skip the first line before comparing + assertEquals(utf8DataSource.getLines().subList(1, 5), utf16DataSource.getLines().subList(1, 5)); + } + private DataSourceLoader dataSourceLoader() { return DataSourceLoaderFactory.create(); } diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesSupplierTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesSupplierTest.java index fddc597..70279fc 100644 --- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesSupplierTest.java +++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesSupplierTest.java @@ -64,12 +64,12 @@ public class DataSourcesSupplierTest { @Test public void shouldResolveDirectory() { - assertEquals(5, supplier(DATA_DIRECTORY, null, null).get().size()); - assertEquals(5, supplier(DATA_DIRECTORY, "", null).get().size()); - assertEquals(5, supplier(DATA_DIRECTORY, "*", null).get().size()); - assertEquals(5, supplier(DATA_DIRECTORY, "*.*", null).get().size()); + assertEquals(7, supplier(DATA_DIRECTORY, null, null).get().size()); + assertEquals(7, supplier(DATA_DIRECTORY, "", null).get().size()); + assertEquals(7, supplier(DATA_DIRECTORY, "*", null).get().size()); + assertEquals(7, supplier(DATA_DIRECTORY, "*.*", null).get().size()); assertEquals(2, supplier(DATA_DIRECTORY, "*.csv", null).get().size()); - assertEquals(1, supplier(DATA_DIRECTORY, "*.t*", null).get().size()); + assertEquals(3, supplier(DATA_DIRECTORY, "*.t*", null).get().size()); assertEquals(0, supplier(DATA_DIRECTORY, "*.bin", null).get().size()); } @@ -77,12 +77,12 @@ public class DataSourcesSupplierTest { public void shouldResolveFilesAndDirectory() { final List<String> sources = Arrays.asList("pom.xml", "README.md", DATA_DIRECTORY); - assertEquals(7, supplier(sources, null, null).get().size()); - assertEquals(7, supplier(sources, "", null).get().size()); - assertEquals(7, supplier(sources, "*", null).get().size()); - assertEquals(7, supplier(sources, "*.*", null).get().size()); + assertEquals(9, supplier(sources, null, null).get().size()); + assertEquals(9, supplier(sources, "", null).get().size()); + assertEquals(9, supplier(sources, "*", null).get().size()); + assertEquals(9, supplier(sources, "*.*", null).get().size()); assertEquals(2, supplier(sources, "*.csv", null).get().size()); - assertEquals(1, supplier(sources, "*.t*", null).get().size()); + assertEquals(3, supplier(sources, "*.t*", null).get().size()); assertEquals(1, supplier(sources, "*.xml", null).get().size()); assertEquals(0, supplier(sources, "*.bin", null).get().size()); @@ -90,8 +90,8 @@ public class DataSourcesSupplierTest { assertEquals(0, supplier(sources, null, "*.*").get().size()); assertEquals(0, supplier(sources, "*", "*").get().size()); - assertEquals(6, supplier(sources, "*", "*.md").get().size()); - assertEquals(4, supplier(sources, "*", "file*.*").get().size()); + assertEquals(8, supplier(sources, "*", "*.md").get().size()); + assertEquals(6, supplier(sources, "*", "file*.*").get().size()); } @Test @@ -142,4 +142,5 @@ public class DataSourcesSupplierTest { private static DataSourcesSupplier supplier(List<String> files, String include, String exclude) { return new DataSourcesSupplier(files, include, exclude, Charset.defaultCharset()); } + } diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java index 1a9fc6a..2d6154e 100644 --- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java +++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourcesTest.java @@ -76,7 +76,6 @@ public class DataSourcesTest { assertEquals(3, dataSources.find(GROUP_PART, "d*").size()); assertEquals(3, dataSources.find(GROUP_PART, "d??????").size()); } - } @Test diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileSupplierTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileSupplierTest.java index 06d5d17..5cc871b 100644 --- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileSupplierTest.java +++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileSupplierTest.java @@ -35,7 +35,7 @@ public class RecursiveFileSupplierTest { @Test public void shouldResolveAllFilesOfDirectory() { - assertEquals(5, fileSupplier(ANY_DIRECTORY, null, null).get().size()); + assertEquals(7, fileSupplier(ANY_DIRECTORY, null, null).get().size()); assertTrue(fileSupplier(ANY_DIRECTORY, UNKNOWN_FILE_NAME, null).get().isEmpty()); } @@ -77,10 +77,12 @@ public class RecursiveFileSupplierTest { public void shouldExcludeFiles() { final List<File> files = fileSupplier(ANY_DIRECTORY, null, "*.csv").get(); - assertEquals(3, files.size()); + assertEquals(5, files.size()); assertEquals("nginx.env", files.get(0).getName()); assertEquals("test.properties", files.get(1).getName()); assertEquals("file_01.txt", files.get(2).getName()); + assertEquals("utf16.txt", files.get(3).getName()); + assertEquals("utf8.txt", files.get(4).getName()); } @Test @@ -105,4 +107,5 @@ public class RecursiveFileSupplierTest { private static RecursiveFileSupplier fileSupplier(List<String> sources, String include, String exclude) { return new RecursiveFileSupplier(sources, singletonList(include), singletonList(exclude)); } + } diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriStringParserTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriStringParserTest.java index 7954f50..c114525 100644 --- a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriStringParserTest.java +++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriStringParserTest.java @@ -20,6 +20,7 @@ import org.apache.freemarker.generator.base.uri.NamedUri; import org.apache.freemarker.generator.base.uri.NamedUriStringParser; import org.junit.Test; +import static java.nio.charset.StandardCharsets.UTF_16; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; @@ -184,6 +185,7 @@ public class NamedUriStringParserTest { assertNull(namedURI.getGroup()); assertEquals("file:///users.csv#charset=UTF-16&mimeType=text/csv", namedURI.getUri().toString()); assertEquals(2, namedURI.getParameters().size()); + assertEquals(UTF_16, namedURI.getCharset()); assertEquals("UTF-16", namedURI.getParameters().get("charset")); assertEquals("text/csv", namedURI.getParameters().get("mimeType")); } @@ -260,4 +262,5 @@ public class NamedUriStringParserTest { private static NamedUri parse(String value) { return NamedUriStringParser.parse(value); } + }
