diff --git a/servant/pom.xml b/servant/pom.xml
index 19d58490d..c49c9ffcb 100644
--- a/servant/pom.xml
+++ b/servant/pom.xml
@@ -14,5 +14,10 @@
junit
test
+
+ org.mockito
+ mockito-core
+ test
+
diff --git a/servant/src/test/java/com/iluwatar/servant/KingTest.java b/servant/src/test/java/com/iluwatar/servant/KingTest.java
new file mode 100644
index 000000000..3c0811bc5
--- /dev/null
+++ b/servant/src/test/java/com/iluwatar/servant/KingTest.java
@@ -0,0 +1,82 @@
+package com.iluwatar.servant;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Date: 12/28/15 - 9:40 PM
+ *
+ * @author Jeroen Meulemeester
+ */
+public class KingTest {
+
+ @Test
+ public void testHungrySoberUncomplimentedKing() {
+ final King king = new King();
+ king.changeMood();
+ assertFalse(king.getMood());
+ }
+
+ @Test
+ public void testFedSoberUncomplimentedKing() {
+ final King king = new King();
+ king.getFed();
+ king.changeMood();
+ assertFalse(king.getMood());
+ }
+
+ @Test
+ public void testHungryDrunkUncomplimentedKing() {
+ final King king = new King();
+ king.getDrink();
+ king.changeMood();
+ assertFalse(king.getMood());
+ }
+
+ @Test
+ public void testHungrySoberComplimentedKing() {
+ final King king = new King();
+ king.receiveCompliments();
+ king.changeMood();
+ assertFalse(king.getMood());
+ }
+
+ @Test
+ public void testFedDrunkUncomplimentedKing() {
+ final King king = new King();
+ king.getFed();
+ king.getDrink();
+ king.changeMood();
+ assertTrue(king.getMood());
+ }
+
+ @Test
+ public void testFedSoberComplimentedKing() {
+ final King king = new King();
+ king.getFed();
+ king.receiveCompliments();
+ king.changeMood();
+ assertFalse(king.getMood());
+ }
+
+ @Test
+ public void testFedDrunkComplimentedKing() {
+ final King king = new King();
+ king.getFed();
+ king.getDrink();
+ king.receiveCompliments();
+ king.changeMood();
+ assertFalse(king.getMood());
+ }
+
+ @Test
+ public void testHungryDrunkComplimentedKing() {
+ final King king = new King();
+ king.getDrink();
+ king.receiveCompliments();
+ king.changeMood();
+ assertFalse(king.getMood());
+ }
+
+}
\ No newline at end of file
diff --git a/servant/src/test/java/com/iluwatar/servant/QueenTest.java b/servant/src/test/java/com/iluwatar/servant/QueenTest.java
new file mode 100644
index 000000000..d6f02774c
--- /dev/null
+++ b/servant/src/test/java/com/iluwatar/servant/QueenTest.java
@@ -0,0 +1,46 @@
+package com.iluwatar.servant;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Date: 12/28/15 - 9:52 PM
+ *
+ * @author Jeroen Meulemeester
+ */
+public class QueenTest {
+
+ @Test
+ public void testNotFlirtyUncomplemented() throws Exception {
+ final Queen queen = new Queen();
+ queen.setFlirtiness(false);
+ queen.changeMood();
+ assertFalse(queen.getMood());
+ }
+
+ @Test
+ public void testNotFlirtyComplemented() throws Exception {
+ final Queen queen = new Queen();
+ queen.setFlirtiness(false);
+ queen.receiveCompliments();
+ queen.changeMood();
+ assertFalse(queen.getMood());
+ }
+
+ @Test
+ public void testFlirtyUncomplemented() throws Exception {
+ final Queen queen = new Queen();
+ queen.changeMood();
+ assertFalse(queen.getMood());
+ }
+
+ @Test
+ public void testFlirtyComplemented() throws Exception {
+ final Queen queen = new Queen();
+ queen.receiveCompliments();
+ queen.changeMood();
+ assertTrue(queen.getMood());
+ }
+
+}
\ No newline at end of file
diff --git a/servant/src/test/java/com/iluwatar/servant/ServantTest.java b/servant/src/test/java/com/iluwatar/servant/ServantTest.java
new file mode 100644
index 000000000..9527bdbc9
--- /dev/null
+++ b/servant/src/test/java/com/iluwatar/servant/ServantTest.java
@@ -0,0 +1,70 @@
+package com.iluwatar.servant;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+/**
+ * Date: 12/28/15 - 10:02 PM
+ *
+ * @author Jeroen Meulemeester
+ */
+public class ServantTest {
+
+ @Test
+ public void testFeed() throws Exception {
+ final Royalty royalty = mock(Royalty.class);
+ final Servant servant = new Servant("test");
+ servant.feed(royalty);
+ verify(royalty).getFed();
+ verifyNoMoreInteractions(royalty);
+ }
+
+ @Test
+ public void testGiveWine() throws Exception {
+ final Royalty royalty = mock(Royalty.class);
+ final Servant servant = new Servant("test");
+ servant.giveWine(royalty);
+ verify(royalty).getDrink();
+ verifyNoMoreInteractions(royalty);
+ }
+
+ @Test
+ public void testGiveCompliments() throws Exception {
+ final Royalty royalty = mock(Royalty.class);
+ final Servant servant = new Servant("test");
+ servant.giveCompliments(royalty);
+ verify(royalty).receiveCompliments();
+ verifyNoMoreInteractions(royalty);
+ }
+
+ @Test
+ public void testCheckIfYouWillBeHanged() throws Exception {
+ final Royalty goodMoodRoyalty = mock(Royalty.class);
+ when(goodMoodRoyalty.getMood()).thenReturn(true);
+
+ final Royalty badMoodRoyalty = mock(Royalty.class);
+ when(badMoodRoyalty.getMood()).thenReturn(true);
+
+ final ArrayList goodCompany = new ArrayList<>();
+ goodCompany.add(goodMoodRoyalty);
+ goodCompany.add(goodMoodRoyalty);
+ goodCompany.add(goodMoodRoyalty);
+
+ final ArrayList badCompany = new ArrayList<>();
+ goodCompany.add(goodMoodRoyalty);
+ goodCompany.add(goodMoodRoyalty);
+ goodCompany.add(badMoodRoyalty);
+
+ assertTrue(new Servant("test").checkIfYouWillBeHanged(goodCompany));
+ assertTrue(new Servant("test").checkIfYouWillBeHanged(badCompany));
+
+ }
+
+}
\ No newline at end of file