diff --git a/pom.xml b/pom.xml index f2f2be0..1464b97 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,33 @@ 4.12.1 test + + org.mockito + mockito-core + 2.9.0 + + + org.powermock + powermock-api-mockito-common + 1.7.3 + + + org.powermock + powermock-module-junit4 + 1.7.3 + test + + + org.powermock + powermock-api-mockito2 + 1.7.3 + test + + + log4j + log4j + 1.2.17 + \ No newline at end of file diff --git a/src/main/java/de/joethei/hs/java2/Klausur.java b/src/main/java/de/joethei/hs/java2/Klausur.java new file mode 100644 index 0000000..a4913e7 --- /dev/null +++ b/src/main/java/de/joethei/hs/java2/Klausur.java @@ -0,0 +1,12 @@ +package de.joethei.hs.java2; + +public class Klausur { + + public boolean istPalindrom(String satz) { + if(satz.length() <= 1) return true; + if(satz.charAt(0) == satz.charAt(satz.length()-1)) { + return istPalindrom(satz.substring(1, satz.length()-1)); + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/de/joethei/hs/java2/praktikum/praktikum1/GrosseZahl.java b/src/main/java/de/joethei/hs/java2/praktikum/praktikum1/GrosseZahl.java index 8dd116c..98f21d7 100644 --- a/src/main/java/de/joethei/hs/java2/praktikum/praktikum1/GrosseZahl.java +++ b/src/main/java/de/joethei/hs/java2/praktikum/praktikum1/GrosseZahl.java @@ -160,6 +160,10 @@ public class GrosseZahl { @Override public int hashCode() { - return super.hashCode(); + int result = 0; + for(int i : zahl) { + result += i; + } + return result * zahl.length; } } diff --git a/src/main/java/de/joethei/hs/java2/praktikum/praktikum2/CharCollection.java b/src/main/java/de/joethei/hs/java2/praktikum/praktikum2/CharCollection.java index 00d1699..c6f8e63 100644 --- a/src/main/java/de/joethei/hs/java2/praktikum/praktikum2/CharCollection.java +++ b/src/main/java/de/joethei/hs/java2/praktikum/praktikum2/CharCollection.java @@ -106,6 +106,11 @@ public class CharCollection implements Cloneable{ @Override public int hashCode() { - return super.hashCode(); + int result = 0; + for(char c : list) { + result += c; + } + + return result * list.size(); } } \ No newline at end of file diff --git a/src/main/java/de/joethei/hs/java2/praktikum/praktikum4/ClientRunnable.java b/src/main/java/de/joethei/hs/java2/praktikum/praktikum4/ClientRunnable.java index b2ef683..e7bbf68 100644 --- a/src/main/java/de/joethei/hs/java2/praktikum/praktikum4/ClientRunnable.java +++ b/src/main/java/de/joethei/hs/java2/praktikum/praktikum4/ClientRunnable.java @@ -15,7 +15,7 @@ public class ClientRunnable implements Runnable{ try { bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); } catch (IOException e) { - e.printStackTrace(); + KlausurenServer.getLogger().fatal(this, e.getCause()); } } @@ -35,7 +35,7 @@ public class ClientRunnable implements Runnable{ Thread.currentThread().interrupt(); } catch (IOException e) { - e.printStackTrace(); + KlausurenServer.getLogger().error(this, e.getCause()); } } } \ No newline at end of file diff --git a/src/main/java/de/joethei/hs/java2/praktikum/praktikum4/KlausurenServer.java b/src/main/java/de/joethei/hs/java2/praktikum/praktikum4/KlausurenServer.java index f1eed2c..c9cb3b8 100644 --- a/src/main/java/de/joethei/hs/java2/praktikum/praktikum4/KlausurenServer.java +++ b/src/main/java/de/joethei/hs/java2/praktikum/praktikum4/KlausurenServer.java @@ -1,10 +1,11 @@ package de.joethei.hs.java2.praktikum.praktikum4; +import org.apache.log4j.Logger; + import java.io.*; import java.net.ServerSocket; import java.util.*; import java.util.concurrent.*; -import java.util.logging.Logger; public class KlausurenServer { @@ -112,7 +113,7 @@ public class KlausurenServer { logger.info("server shutdown"); Thread.currentThread().interrupt(); } catch (IOException e) { - logger.throwing("KlausurenServer", "Constructor", e.getCause()); + logger.error(this, e.getCause()); } }; @@ -125,7 +126,7 @@ public class KlausurenServer { try { fileReader = new FileReader(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum4/data.txt")).getFile()); } catch (FileNotFoundException e) { - logger.throwing("KlausurenServer", "load", e.getCause()); + logger.error(this, e.getCause()); } try (BufferedReader br = new BufferedReader(Objects.requireNonNull(fileReader))) { for (String line = br.readLine(); line != null; line = br.readLine()) { @@ -137,7 +138,7 @@ public class KlausurenServer { data.put(array[0], set); } } catch (IOException e) { - logger.throwing("KlausurenServer", "load", e.getCause()); + logger.error(this, e.getCause()); } } @@ -157,7 +158,7 @@ public class KlausurenServer { } } catch (IOException e) { - logger.throwing("KlausurenServer", "save", e.getCause()); + logger.error(this, e.getCause()); } finally { assert printWriter != null; printWriter.close(); diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties new file mode 100644 index 0000000..393e087 --- /dev/null +++ b/src/main/resources/log4j.properties @@ -0,0 +1,8 @@ +# Root logger option +log4j.rootLogger=INFO, stdout + +# Direct log messages to stdout +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/src/test/java/de/joethei/hs/java2/tests/CharCollectionTest.java b/src/test/java/de/joethei/hs/java2/tests/CharCollectionTest.java index b26dfb6..30c59f4 100644 --- a/src/test/java/de/joethei/hs/java2/tests/CharCollectionTest.java +++ b/src/test/java/de/joethei/hs/java2/tests/CharCollectionTest.java @@ -62,4 +62,9 @@ public class CharCollectionTest { assertTrue(new CharCollection("Hallo").isSubset(new CharCollection("Hao"))); } + @Test + public void hashCodeTest() { + assertEquals(new CharCollection("HalloWorld").hashCode(), new CharCollection("HalloWorld").hashCode()); + } + } \ No newline at end of file diff --git a/src/test/java/de/joethei/hs/java2/tests/GrosseZahlTest.java b/src/test/java/de/joethei/hs/java2/tests/GrosseZahlTest.java index 85563d3..111a252 100644 --- a/src/test/java/de/joethei/hs/java2/tests/GrosseZahlTest.java +++ b/src/test/java/de/joethei/hs/java2/tests/GrosseZahlTest.java @@ -83,4 +83,9 @@ public class GrosseZahlTest { new GrosseZahl("42/"); } + @Test + public void hashCodeTest() { + assertEquals(new GrosseZahl(42).hashCode(), new GrosseZahl("42").hashCode()); + } + } \ No newline at end of file diff --git a/src/test/java/de/joethei/hs/java2/tests/KlausurTest.java b/src/test/java/de/joethei/hs/java2/tests/KlausurTest.java new file mode 100644 index 0000000..5346517 --- /dev/null +++ b/src/test/java/de/joethei/hs/java2/tests/KlausurTest.java @@ -0,0 +1,20 @@ +package de.joethei.hs.java2.tests; + +import de.joethei.hs.java2.Klausur; +import org.junit.Test; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class KlausurTest { + + @Test + public void istPalindrom() { + Klausur klausur = new Klausur(); + assertTrue(klausur.istPalindrom("ABBA")); + assertTrue(klausur.istPalindrom("lagerregal")); + assertTrue(klausur.istPalindrom("a")); + assertTrue(klausur.istPalindrom("")); + assertFalse(klausur.istPalindrom("Hallo Welt")); + } +} \ No newline at end of file diff --git a/src/test/java/de/joethei/hs/java2/tests/KlausurenServerTest3.java b/src/test/java/de/joethei/hs/java2/tests/KlausurenServerTest3.java new file mode 100644 index 0000000..42e4458 --- /dev/null +++ b/src/test/java/de/joethei/hs/java2/tests/KlausurenServerTest3.java @@ -0,0 +1,50 @@ +package de.joethei.hs.java2.tests; + +import de.joethei.hs.java2.praktikum.praktikum4.KlausurenServer; +import org.apache.log4j.AppenderSkeleton; +import org.apache.log4j.Logger; +import org.apache.log4j.spi.LoggingEvent; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.modules.junit4.PowerMockRunner; + +import java.io.*; +import java.net.Socket; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.verify; + +@RunWith(PowerMockRunner.class) +public class KlausurenServerTest3 { + + @InjectMocks + private KlausurenServer klausurenServer = new KlausurenServer(6770); + + @Mock + private Socket socket; + @Mock + AppenderSkeleton appender; + @Captor + ArgumentCaptor logCaptor; + + @Test(expected = IOException.class) + public void ioException() throws Exception { + PowerMockito.whenNew(OutputStreamWriter.class).withArguments(new Socket().getOutputStream()).thenAnswer(invocationOnMock -> { + throw new IOException("TestCase"); + }); + Logger.getLogger("KlausurenServer").addAppender(appender); + + verify(appender).doAppend(logCaptor.capture()); + + assertEquals("test", "test", logCaptor.getValue().getRenderedMessage()); + + + KlausurenServer klausurenServer = new KlausurenServer(6770); + + } +} \ No newline at end of file