From c6464f58e8de3eab7513889bd6529640289f8f84 Mon Sep 17 00:00:00 2001 From: jez04 <david.jezek@post.cz> Date: Mon, 5 Feb 2024 16:54:53 +0100 Subject: [PATCH] feat: initial version of sourcode --- .gitignore | 16 +++++ pom.xml | 60 +++++++++++++++++++ .../ConversionException.java | 11 ++++ .../lab01text2asciiart/Text2AsciiArt.java | 34 +++++++++++ src/main/java/module-info.java | 3 + .../cz/vsb/fei/java2/jez04best/AppTest.java | 19 ++++++ .../lab01text2asciiart/Text2AsciiArtTest.java | 48 +++++++++++++++ 7 files changed, 191 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/cz/vsb/fei/java2/lab01text2asciiart/ConversionException.java create mode 100644 src/main/java/cz/vsb/fei/java2/lab01text2asciiart/Text2AsciiArt.java create mode 100644 src/main/java/module-info.java create mode 100644 src/test/java/cz/vsb/fei/java2/jez04best/AppTest.java create mode 100644 src/test/java/cz/vsb/fei/java2/lab01text2asciiart/Text2AsciiArtTest.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7f69afd --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +# Eclipse +.classpath +.project +.settings/ + +# Intellij +.idea/ +*.iml +*.iws + +# Mac +.DS_Store + +# Maven +log/ +target/ \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..873b812 --- /dev/null +++ b/pom.xml @@ -0,0 +1,60 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>cz.vsb.fei.java2</groupId> + <artifactId>lab01-text2asciiart</artifactId> + <version>0.0.1-SNAPSHOT</version> + + <name>lab01-text2asciiart</name> + + <packaging>jar</packaging> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.release>21</maven.compiler.release> + <JUnit.version>5.10.1</JUnit.version> + </properties> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.junit</groupId> + <artifactId>junit-bom</artifactId> + <version>${JUnit.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <!-- https://mvnrepository.com/artifact/io.leego/banana --> + <dependency> + <groupId>io.leego</groupId> + <artifactId>banana</artifactId> + <version>2.1.0</version> + </dependency> + + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest</artifactId> + <version>2.2</version> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <version>3.2.1</version> + </plugin> + </plugins> + </build> + +</project> diff --git a/src/main/java/cz/vsb/fei/java2/lab01text2asciiart/ConversionException.java b/src/main/java/cz/vsb/fei/java2/lab01text2asciiart/ConversionException.java new file mode 100644 index 0000000..f9d9bc1 --- /dev/null +++ b/src/main/java/cz/vsb/fei/java2/lab01text2asciiart/ConversionException.java @@ -0,0 +1,11 @@ +package cz.vsb.fei.java2.lab01text2asciiart; + +public class ConversionException extends Exception { + + private static final long serialVersionUID = 195515812503598135L; + + public ConversionException(String message) { + super(message); + } + +} diff --git a/src/main/java/cz/vsb/fei/java2/lab01text2asciiart/Text2AsciiArt.java b/src/main/java/cz/vsb/fei/java2/lab01text2asciiart/Text2AsciiArt.java new file mode 100644 index 0000000..7536e5f --- /dev/null +++ b/src/main/java/cz/vsb/fei/java2/lab01text2asciiart/Text2AsciiArt.java @@ -0,0 +1,34 @@ +package cz.vsb.fei.java2.lab01text2asciiart; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +import io.leego.banana.BananaUtils; +import io.leego.banana.Font; + +/** + * Class <b>App</b> - extends class Application and it is an entry point of the + * program + * + * @author Java I + */ +public class Text2AsciiArt { + + public String convert(String text) throws ConversionException { + return convert(text, Font.STANDARD.getName()); + } + + public String convert(String text, String fontName) throws ConversionException { + Optional<Font> selectedFont = Font.values().stream().filter(font -> Objects.equals(font.getName(), fontName)) + .findAny(); + if (selectedFont.isEmpty()) { + throw new ConversionException("Uknown font name: " + fontName); + } + return BananaUtils.bananaify(text, selectedFont.get()); + } + + public List<String> getAllfontNames() { + return Font.values().stream().map(Font::getName).toList(); + } +} \ No newline at end of file diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java new file mode 100644 index 0000000..ff366e9 --- /dev/null +++ b/src/main/java/module-info.java @@ -0,0 +1,3 @@ +module cz.vsb.fei.java2.lab01text2asciiart { + requires banana; +} \ No newline at end of file diff --git a/src/test/java/cz/vsb/fei/java2/jez04best/AppTest.java b/src/test/java/cz/vsb/fei/java2/jez04best/AppTest.java new file mode 100644 index 0000000..ef9c8eb --- /dev/null +++ b/src/test/java/cz/vsb/fei/java2/jez04best/AppTest.java @@ -0,0 +1,19 @@ +package cz.vsb.fei.java2.jez04best; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +/** + * Unit test for simple App. + */ +class AppTest { + + /** + * Rigorous Test :-) + */ + @Test + void shouldAnswerWithTrue() { + assertTrue(true); + } +} diff --git a/src/test/java/cz/vsb/fei/java2/lab01text2asciiart/Text2AsciiArtTest.java b/src/test/java/cz/vsb/fei/java2/lab01text2asciiart/Text2AsciiArtTest.java new file mode 100644 index 0000000..d34bfa4 --- /dev/null +++ b/src/test/java/cz/vsb/fei/java2/lab01text2asciiart/Text2AsciiArtTest.java @@ -0,0 +1,48 @@ +package cz.vsb.fei.java2.lab01text2asciiart; + +import static org.hamcrest.Matchers.empty; +import static org.hamcrest.Matchers.emptyOrNullString; +import static org.hamcrest.Matchers.not; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; + +import org.hamcrest.MatcherAssert; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import io.leego.banana.Font; + +class Text2AsciiArtTest { + + Text2AsciiArt text2AsciiArt; + + @BeforeEach + void init() { + text2AsciiArt = new Text2AsciiArt(); + } + + @Test + void testConvertText() throws ConversionException { + MatcherAssert.assertThat(text2AsciiArt.convert("TEST"), not(emptyOrNullString())); + } + + @Test + void testConvertTextAndFont() throws ConversionException { + MatcherAssert.assertThat(text2AsciiArt.convert("TEST", "ANSI Shadow"), not(emptyOrNullString())); + } + + @Test + void testConvertTextUknownFont(){ + assertThrows(ConversionException.class, () -> text2AsciiArt.convert("TEST", "uknown font")); + } + + @Test + void testGetAllfontNames() { + List<String> result = text2AsciiArt.getAllfontNames(); + MatcherAssert.assertThat(result, not(empty())); + assertTrue(result.contains(Font.STANDARD.getName())); + } + +} -- GitLab