From bc96cf07976bcd2c56487999927d449214d21816 Mon Sep 17 00:00:00 2001 From: Anthony Berg Date: Tue, 15 Oct 2024 17:53:31 +0200 Subject: [PATCH] feat(test): add test for EMail class --- .idea/uiDesigner.xml | 124 +++++++++++++++++++++++++++++++++++ Kahoot Challenge.iml | 19 +++++- src/{ => main}/EMail.java | 0 src/{ => main}/Main.java | 0 src/{ => main}/ReadFile.java | 0 src/test/EMailTest.java | 100 ++++++++++++++++++++++++++++ 6 files changed, 242 insertions(+), 1 deletion(-) create mode 100644 .idea/uiDesigner.xml rename src/{ => main}/EMail.java (100%) rename src/{ => main}/Main.java (100%) rename src/{ => main}/ReadFile.java (100%) create mode 100644 src/test/EMailTest.java diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Kahoot Challenge.iml b/Kahoot Challenge.iml index c90834f..d55ea3e 100644 --- a/Kahoot Challenge.iml +++ b/Kahoot Challenge.iml @@ -3,9 +3,26 @@ - + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/EMail.java b/src/main/EMail.java similarity index 100% rename from src/EMail.java rename to src/main/EMail.java diff --git a/src/Main.java b/src/main/Main.java similarity index 100% rename from src/Main.java rename to src/main/Main.java diff --git a/src/ReadFile.java b/src/main/ReadFile.java similarity index 100% rename from src/ReadFile.java rename to src/main/ReadFile.java diff --git a/src/test/EMailTest.java b/src/test/EMailTest.java new file mode 100644 index 0000000..1df1f74 --- /dev/null +++ b/src/test/EMailTest.java @@ -0,0 +1,100 @@ +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +@DisplayName("EMail class functions tests") +class EMailTest { + + @Nested + @DisplayName("Testing EMail `validate()` function") + class ValidateTest { + + @Test + @DisplayName("Empty string") + void emptyString() { + assertFalse(EMail.validate("")); + } + + @Test + @DisplayName("Valid email") + void validEmail() { + assertTrue(EMail.validate("test@test.com")); + assertTrue(EMail.validate("test123@test.com")); + assertTrue(EMail.validate("123@123.com")); + assertTrue(EMail.validate("abc123abc123@abc123abc123.com")); + assertTrue(EMail.validate("123@test.no")); + } + + @Test + @DisplayName("Invalid email") + void invalidEmail() { + assertFalse(EMail.validate("@test.com")); + assertFalse(EMail.validate("test@.com")); + assertFalse(EMail.validate("@test.com")); + assertFalse(EMail.validate("test.com")); + assertFalse(EMail.validate("test@test.")); + assertFalse(EMail.validate("test@test")); + assertFalse(EMail.validate("test@testing@test.com")); + } + + @Test + @DisplayName("Email alias with +") + void aliasPlus() { + assertTrue(EMail.validate("test+alias@test.com")); + assertTrue(EMail.validate("test+123@test.com")); + assertTrue(EMail.validate("test+alias123@test.com")); + } + + @Test + @DisplayName("Email alias with .") + void aliasDot() { + assertTrue(EMail.validate("te.st@test.com")); + assertTrue(EMail.validate("t.e.s.t@test.com")); + } + } + + @Nested + @DisplayName("Testing EMail `getDomain()` function") + class GetDomainTest { + + @Test + @DisplayName("Throws with empty string") + void emptyString() { + assertThrowsExactly(IllegalArgumentException.class, () -> EMail.getDomain("")); + } + + @Test + @DisplayName("Throws with invalid emails") + void invalidEmail() { + assertThrowsExactly(IllegalArgumentException.class, () -> EMail.getDomain("@test.com")); + assertThrowsExactly(IllegalArgumentException.class, () -> EMail.getDomain("test@.com")); + assertThrowsExactly(IllegalArgumentException.class, () -> EMail.getDomain("@test.com")); + assertThrowsExactly(IllegalArgumentException.class, () -> EMail.getDomain("test.com")); + assertThrowsExactly(IllegalArgumentException.class, () -> EMail.getDomain("test@test.")); + assertThrowsExactly(IllegalArgumentException.class, () -> EMail.getDomain("test@test")); + assertThrowsExactly(IllegalArgumentException.class, () -> EMail.getDomain("test@testing@test.com")); + } + + @Test + @DisplayName("Check the domain is correct for each email address") + void validEmail() { + assertEquals("test.com", EMail.getDomain("test@test.com")); + assertEquals("test.com", EMail.getDomain("test123@test.com")); + assertEquals("123.com", EMail.getDomain("123@123.com")); + assertEquals("abc123abc123.com", EMail.getDomain("abc123abc123@abc123abc123.com")); + assertEquals("gmail.com", EMail.getDomain("test@gmail.com")); + } + + @Test + @DisplayName("Check the domains will not be affected by aliases") + void aliasEmail() { + assertEquals("test.com", EMail.getDomain("test+alias@test.com")); + assertEquals("test.com", EMail.getDomain("test+123@test.com")); + assertEquals("test.com", EMail.getDomain("test+alias123@test.com")); + assertEquals("test.com", EMail.getDomain("te.st@test.com")); + assertEquals("test.com", EMail.getDomain("t.e.s.t@test.com")); + } + } +} \ No newline at end of file