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