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