From 0261a813359c3ae8df6727f6cd3d4d815f1f3269 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Fri, 17 Apr 2020 14:10:31 +0100 Subject: [PATCH 01/22] Sample code lesson 1 --- src/main/java/com/serenitydojo/HelloWorldWriter.java | 4 ++++ src/test/java/com/serenitydojo/HelloWorldWriterTest.java | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 src/main/java/com/serenitydojo/HelloWorldWriter.java create mode 100644 src/test/java/com/serenitydojo/HelloWorldWriterTest.java diff --git a/src/main/java/com/serenitydojo/HelloWorldWriter.java b/src/main/java/com/serenitydojo/HelloWorldWriter.java new file mode 100644 index 0000000..13b3b6b --- /dev/null +++ b/src/main/java/com/serenitydojo/HelloWorldWriter.java @@ -0,0 +1,4 @@ +package com.serenitydojo; + +public class HelloWorldWriter { +} diff --git a/src/test/java/com/serenitydojo/HelloWorldWriterTest.java b/src/test/java/com/serenitydojo/HelloWorldWriterTest.java new file mode 100644 index 0000000..c4f8073 --- /dev/null +++ b/src/test/java/com/serenitydojo/HelloWorldWriterTest.java @@ -0,0 +1,4 @@ +package com.serenitydojo; + +public class HelloWorldWriterTest { +} From 75c7ea4dbf6bbdf96ba0abbef43003345d5b1097 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Mon, 20 Apr 2020 10:58:40 +0100 Subject: [PATCH 02/22] Starting point for lesson 3 exercises --- src/main/java/com/serenitydojo/Cat.java | 29 +++++++++++++++++++ .../com/serenitydojo/WhenCreatingObjects.java | 18 ++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 src/main/java/com/serenitydojo/Cat.java create mode 100644 src/test/java/com/serenitydojo/WhenCreatingObjects.java diff --git a/src/main/java/com/serenitydojo/Cat.java b/src/main/java/com/serenitydojo/Cat.java new file mode 100644 index 0000000..ca01e73 --- /dev/null +++ b/src/main/java/com/serenitydojo/Cat.java @@ -0,0 +1,29 @@ +package com.serenitydojo; + +public class Cat { + private String name; + private String favoriteFood; + private int age; + + public Cat(String name, String favoriteFood, int age) { + this.name = name; + this.favoriteFood = favoriteFood; + this.age = age; + } + + public String getName() { + return name; + } + + public void setFavoriteFood(String favoriteFood) { + this.favoriteFood = favoriteFood; + } + + public String getFavoriteFood() { + return favoriteFood; + } + + public int getAge() { + return age; + } +} diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java new file mode 100644 index 0000000..d53e9d9 --- /dev/null +++ b/src/test/java/com/serenitydojo/WhenCreatingObjects.java @@ -0,0 +1,18 @@ +package com.serenitydojo; + +import org.junit.Assert; +import org.junit.Test; + +public class WhenCreatingObjects { + + @Test + public void creating_a_cat() { + + Cat felix = new Cat("Felix","Tuna", 4); + + assert felix.getName().equals("Spot"); + Assert.assertEquals(felix.getAge(), 5); + Assert.assertEquals(felix.getFavoriteFood(), "Tuna"); + Assert.assertEquals(felix.getAge(), 5); + } +} From 73f19db034adce0383eefb37a81ebeffa9326e07 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Mon, 20 Apr 2020 11:44:24 +0100 Subject: [PATCH 03/22] Starting point --- .../com/serenitydojo/WhenCreatingObjects.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java index d53e9d9..828d436 100644 --- a/src/test/java/com/serenitydojo/WhenCreatingObjects.java +++ b/src/test/java/com/serenitydojo/WhenCreatingObjects.java @@ -10,9 +10,18 @@ public void creating_a_cat() { Cat felix = new Cat("Felix","Tuna", 4); - assert felix.getName().equals("Spot"); - Assert.assertEquals(felix.getAge(), 5); + Assert.assertEquals(felix.getName(), "Felix"); Assert.assertEquals(felix.getFavoriteFood(), "Tuna"); - Assert.assertEquals(felix.getAge(), 5); + Assert.assertEquals(felix.getAge(), 4); + } + + @Test + public void creating_a_dog() { + +// Dog dog = new Dog("Fido","Bone", 5); +// Assert.assertEquals(fido.getName(), "Fido"); +// Assert.assertEquals(fido.getFavoriteToy, "Bone"); +// Assert.assertEquals(fido.getAge(), 5); + } } From 0998f4399e747afb4d344dac3e40e54f23dc2964 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Mon, 20 Apr 2020 11:46:28 +0100 Subject: [PATCH 04/22] starting point for the exercises --- src/test/java/com/serenitydojo/WhenCreatingObjects.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java index 828d436..f0be2a4 100644 --- a/src/test/java/com/serenitydojo/WhenCreatingObjects.java +++ b/src/test/java/com/serenitydojo/WhenCreatingObjects.java @@ -18,9 +18,9 @@ public void creating_a_cat() { @Test public void creating_a_dog() { -// Dog dog = new Dog("Fido","Bone", 5); +// Dog dog = fido Dog("Fido","Bone", 5); // Assert.assertEquals(fido.getName(), "Fido"); -// Assert.assertEquals(fido.getFavoriteToy, "Bone"); +// Assert.assertEquals(fido.getFavoriteToy(), "Bone"); // Assert.assertEquals(fido.getAge(), 5); } From e4cb37836a99a8067ba07b32ab46ca9f665d1eb9 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Wed, 22 Apr 2020 08:53:28 +0100 Subject: [PATCH 05/22] Sample fields and objects code --- src/main/java/com/serenitydojo/Cat.java | 41 +++++++++++++++++++ .../com/serenitydojo/WhenCreatingObjects.java | 9 ++++ 2 files changed, 50 insertions(+) diff --git a/src/main/java/com/serenitydojo/Cat.java b/src/main/java/com/serenitydojo/Cat.java index ca01e73..1ea2a35 100644 --- a/src/main/java/com/serenitydojo/Cat.java +++ b/src/main/java/com/serenitydojo/Cat.java @@ -1,10 +1,30 @@ package com.serenitydojo; +/** + * A feline creature. + */ public class Cat { + /** + * The name of the cat + * This is important + */ private String name; private String favoriteFood; private int age; + // A very useful field + public static final String CAT_NOISE = "Meow"; + + public static String usualFood() { + return "Tuna"; + } + + public Cat(String name, int age) { + this.name = name; + this.age = age; + this.favoriteFood = usualFood(); + } + public Cat(String name, String favoriteFood, int age) { this.name = name; this.favoriteFood = favoriteFood; @@ -26,4 +46,25 @@ public String getFavoriteFood() { public int getAge() { return age; } + + public void makeNoise() { + System.out.println(CAT_NOISE); + } + + public void feed(String food) { + System.out.println(name + " eats some " + food); + } + + public void groom() { + lickPaws(); + cleanFur(); + } + + private void cleanFur() { + System.out.println(name + " cleans his fur"); + } + + private void lickPaws() { + System.out.println(name + " licks his paws"); + } } diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java index f0be2a4..d542aac 100644 --- a/src/test/java/com/serenitydojo/WhenCreatingObjects.java +++ b/src/test/java/com/serenitydojo/WhenCreatingObjects.java @@ -2,6 +2,7 @@ import org.junit.Assert; import org.junit.Test; +import static com.serenitydojo.Cat.usualFood; public class WhenCreatingObjects { @@ -24,4 +25,12 @@ public void creating_a_dog() { // Assert.assertEquals(fido.getAge(), 5); } + + @Test + public void cat_makes_noise() { + Cat felix = new Cat("Felix", 4); + Cat spot = new Cat("Spot","Salmon", 3); + + System.out.println("Cats like " + usualFood()); + } } From 28ffb99921be4e8f6ce39c6945b5cf84d3ffd07f Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Wed, 22 Apr 2020 08:58:59 +0100 Subject: [PATCH 06/22] Lesson 6 starting point --- src/main/java/com/serenitydojo/Dog.java | 26 +++++++++++++++++++ .../com/serenitydojo/HelloWorldWriter.java | 4 --- .../serenitydojo/HelloWorldWriterTest.java | 4 --- .../com/serenitydojo/WhenCreatingObjects.java | 8 +++--- 4 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/serenitydojo/Dog.java delete mode 100644 src/main/java/com/serenitydojo/HelloWorldWriter.java delete mode 100644 src/test/java/com/serenitydojo/HelloWorldWriterTest.java diff --git a/src/main/java/com/serenitydojo/Dog.java b/src/main/java/com/serenitydojo/Dog.java new file mode 100644 index 0000000..444dd5b --- /dev/null +++ b/src/main/java/com/serenitydojo/Dog.java @@ -0,0 +1,26 @@ +package com.serenitydojo; + +public class Dog { + private String name; + private String favoriteToy; + private int age; + + + public Dog(String name, String favoriteToy, int age) { + this.name = name; + this.favoriteToy = favoriteToy; + this.age = age; + } + + public String getName() { + return name; + } + + public String getFavoriteToy() { + return favoriteToy; + } + + public int getAge() { + return age; + } +} diff --git a/src/main/java/com/serenitydojo/HelloWorldWriter.java b/src/main/java/com/serenitydojo/HelloWorldWriter.java deleted file mode 100644 index 13b3b6b..0000000 --- a/src/main/java/com/serenitydojo/HelloWorldWriter.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.serenitydojo; - -public class HelloWorldWriter { -} diff --git a/src/test/java/com/serenitydojo/HelloWorldWriterTest.java b/src/test/java/com/serenitydojo/HelloWorldWriterTest.java deleted file mode 100644 index c4f8073..0000000 --- a/src/test/java/com/serenitydojo/HelloWorldWriterTest.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.serenitydojo; - -public class HelloWorldWriterTest { -} diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java index d542aac..4b13ae7 100644 --- a/src/test/java/com/serenitydojo/WhenCreatingObjects.java +++ b/src/test/java/com/serenitydojo/WhenCreatingObjects.java @@ -19,10 +19,10 @@ public void creating_a_cat() { @Test public void creating_a_dog() { -// Dog dog = fido Dog("Fido","Bone", 5); -// Assert.assertEquals(fido.getName(), "Fido"); -// Assert.assertEquals(fido.getFavoriteToy(), "Bone"); -// Assert.assertEquals(fido.getAge(), 5); + Dog fido = new Dog("Fido","Bone", 5); + Assert.assertEquals(fido.getName(), "Fido"); + Assert.assertEquals(fido.getFavoriteToy(), "Bone"); + Assert.assertEquals(fido.getAge(), 5); } From f90761785f1530c5d1b17126f79ac19c16f0f105 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Wed, 22 Apr 2020 09:26:31 +0100 Subject: [PATCH 07/22] Cats and dogs --- src/main/java/com/serenitydojo/Cat.java | 22 ++++++------------- src/main/java/com/serenitydojo/Dog.java | 10 ++------- src/main/java/com/serenitydojo/Pet.java | 12 ++++++++++ .../com/serenitydojo/WhenCreatingObjects.java | 2 ++ 4 files changed, 23 insertions(+), 23 deletions(-) create mode 100644 src/main/java/com/serenitydojo/Pet.java diff --git a/src/main/java/com/serenitydojo/Cat.java b/src/main/java/com/serenitydojo/Cat.java index 1ea2a35..bb084aa 100644 --- a/src/main/java/com/serenitydojo/Cat.java +++ b/src/main/java/com/serenitydojo/Cat.java @@ -3,12 +3,8 @@ /** * A feline creature. */ -public class Cat { - /** - * The name of the cat - * This is important - */ - private String name; +public class Cat extends Pet { + private String favoriteFood; private int age; @@ -20,21 +16,17 @@ public static String usualFood() { } public Cat(String name, int age) { - this.name = name; + super(name); this.age = age; this.favoriteFood = usualFood(); } public Cat(String name, String favoriteFood, int age) { - this.name = name; + super(name); this.favoriteFood = favoriteFood; this.age = age; } - public String getName() { - return name; - } - public void setFavoriteFood(String favoriteFood) { this.favoriteFood = favoriteFood; } @@ -52,7 +44,7 @@ public void makeNoise() { } public void feed(String food) { - System.out.println(name + " eats some " + food); + System.out.println(getName() + " eats some " + food); } public void groom() { @@ -61,10 +53,10 @@ public void groom() { } private void cleanFur() { - System.out.println(name + " cleans his fur"); + System.out.println(getName() + " cleans his fur"); } private void lickPaws() { - System.out.println(name + " licks his paws"); + System.out.println(getName() + " licks his paws"); } } diff --git a/src/main/java/com/serenitydojo/Dog.java b/src/main/java/com/serenitydojo/Dog.java index 444dd5b..305a13b 100644 --- a/src/main/java/com/serenitydojo/Dog.java +++ b/src/main/java/com/serenitydojo/Dog.java @@ -1,21 +1,15 @@ package com.serenitydojo; -public class Dog { - private String name; +public class Dog extends Pet { private String favoriteToy; private int age; - public Dog(String name, String favoriteToy, int age) { - this.name = name; + super(name); this.favoriteToy = favoriteToy; this.age = age; } - public String getName() { - return name; - } - public String getFavoriteToy() { return favoriteToy; } diff --git a/src/main/java/com/serenitydojo/Pet.java b/src/main/java/com/serenitydojo/Pet.java new file mode 100644 index 0000000..a4e7194 --- /dev/null +++ b/src/main/java/com/serenitydojo/Pet.java @@ -0,0 +1,12 @@ +package com.serenitydojo; + +public class Pet { + private String name; + + public Pet(String name) { + this.name = name; + } + public String getName() { + return name; + } +} diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java index 4b13ae7..856f274 100644 --- a/src/test/java/com/serenitydojo/WhenCreatingObjects.java +++ b/src/test/java/com/serenitydojo/WhenCreatingObjects.java @@ -14,6 +14,8 @@ public void creating_a_cat() { Assert.assertEquals(felix.getName(), "Felix"); Assert.assertEquals(felix.getFavoriteFood(), "Tuna"); Assert.assertEquals(felix.getAge(), 4); + + Pet hampter = new Pet("Rusty"); } @Test From 06878ee9facc8e2046b9cefddcfb4d0d57e30992 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Wed, 22 Apr 2020 09:34:26 +0100 Subject: [PATCH 08/22] Sample solution --- src/main/java/com/serenitydojo/Hampster.java | 20 +++++++++++++++++++ .../com/serenitydojo/WhenCreatingObjects.java | 13 ++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/serenitydojo/Hampster.java diff --git a/src/main/java/com/serenitydojo/Hampster.java b/src/main/java/com/serenitydojo/Hampster.java new file mode 100644 index 0000000..39462f6 --- /dev/null +++ b/src/main/java/com/serenitydojo/Hampster.java @@ -0,0 +1,20 @@ +package com.serenitydojo; + +public class Hampster extends Pet { + private String favoriteGame; + private int age; + + public Hampster(String name, String favoriteGame, int age) { + super(name); + this.favoriteGame = favoriteGame; + this.age = age; + } + + public String getFavoriteGame() { + return favoriteGame; + } + + public int getAge() { + return age; + } +} diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java index 856f274..5c8347d 100644 --- a/src/test/java/com/serenitydojo/WhenCreatingObjects.java +++ b/src/test/java/com/serenitydojo/WhenCreatingObjects.java @@ -14,8 +14,6 @@ public void creating_a_cat() { Assert.assertEquals(felix.getName(), "Felix"); Assert.assertEquals(felix.getFavoriteFood(), "Tuna"); Assert.assertEquals(felix.getAge(), 4); - - Pet hampter = new Pet("Rusty"); } @Test @@ -28,6 +26,17 @@ public void creating_a_dog() { } + @Test + public void creating_a_hampster() { + + Hampster rusty = new Hampster("Rusty","Wheel",1); + + Assert.assertEquals(rusty.getName(),"Rusty"); + Assert.assertEquals(rusty.getFavoriteGame(),"Wheel"); + Assert.assertEquals(rusty.getAge(),1); + } + + @Test public void cat_makes_noise() { Cat felix = new Cat("Felix", 4); From 504d38355cae5d5777a0ff3f1bd9b27e0f286ca3 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Fri, 24 Apr 2020 08:12:19 +0100 Subject: [PATCH 09/22] Sample code --- src/main/java/com/serenitydojo/Cat.java | 5 +- src/main/java/com/serenitydojo/Dog.java | 4 ++ src/main/java/com/serenitydojo/Hampster.java | 5 ++ src/main/java/com/serenitydojo/Pet.java | 5 +- .../com/serenitydojo/WhenCreatingObjects.java | 55 +++++++++++++++---- 5 files changed, 59 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/serenitydojo/Cat.java b/src/main/java/com/serenitydojo/Cat.java index bb084aa..6ceb5de 100644 --- a/src/main/java/com/serenitydojo/Cat.java +++ b/src/main/java/com/serenitydojo/Cat.java @@ -39,8 +39,9 @@ public int getAge() { return age; } - public void makeNoise() { - System.out.println(CAT_NOISE); + @Override + public String makeNoise() { + return CAT_NOISE; } public void feed(String food) { diff --git a/src/main/java/com/serenitydojo/Dog.java b/src/main/java/com/serenitydojo/Dog.java index 305a13b..828d66c 100644 --- a/src/main/java/com/serenitydojo/Dog.java +++ b/src/main/java/com/serenitydojo/Dog.java @@ -17,4 +17,8 @@ public String getFavoriteToy() { public int getAge() { return age; } + + public String makeNoise() { + return "Woof"; + } } diff --git a/src/main/java/com/serenitydojo/Hampster.java b/src/main/java/com/serenitydojo/Hampster.java index 39462f6..dc36682 100644 --- a/src/main/java/com/serenitydojo/Hampster.java +++ b/src/main/java/com/serenitydojo/Hampster.java @@ -17,4 +17,9 @@ public String getFavoriteGame() { public int getAge() { return age; } + + @Override + public String makeNoise() { + return "Squeak"; + } } diff --git a/src/main/java/com/serenitydojo/Pet.java b/src/main/java/com/serenitydojo/Pet.java index a4e7194..b9c71c3 100644 --- a/src/main/java/com/serenitydojo/Pet.java +++ b/src/main/java/com/serenitydojo/Pet.java @@ -1,6 +1,6 @@ package com.serenitydojo; -public class Pet { +public abstract class Pet { private String name; public Pet(String name) { @@ -9,4 +9,7 @@ public Pet(String name) { public String getName() { return name; } + + public String goForWalks() { return "walk walk walk"; } + public abstract String makeNoise(); } diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java index 5c8347d..ec85fe2 100644 --- a/src/test/java/com/serenitydojo/WhenCreatingObjects.java +++ b/src/test/java/com/serenitydojo/WhenCreatingObjects.java @@ -2,7 +2,8 @@ import org.junit.Assert; import org.junit.Test; -import static com.serenitydojo.Cat.usualFood; + +import static org.junit.Assert.assertEquals; public class WhenCreatingObjects { @@ -11,18 +12,18 @@ public void creating_a_cat() { Cat felix = new Cat("Felix","Tuna", 4); - Assert.assertEquals(felix.getName(), "Felix"); - Assert.assertEquals(felix.getFavoriteFood(), "Tuna"); - Assert.assertEquals(felix.getAge(), 4); + assertEquals(felix.getName(), "Felix"); + assertEquals(felix.getFavoriteFood(), "Tuna"); + assertEquals(felix.getAge(), 4); } @Test public void creating_a_dog() { Dog fido = new Dog("Fido","Bone", 5); - Assert.assertEquals(fido.getName(), "Fido"); - Assert.assertEquals(fido.getFavoriteToy(), "Bone"); - Assert.assertEquals(fido.getAge(), 5); + assertEquals(fido.getName(), "Fido"); + assertEquals(fido.getFavoriteToy(), "Bone"); + assertEquals(fido.getAge(), 5); } @@ -31,17 +32,47 @@ public void creating_a_hampster() { Hampster rusty = new Hampster("Rusty","Wheel",1); - Assert.assertEquals(rusty.getName(),"Rusty"); - Assert.assertEquals(rusty.getFavoriteGame(),"Wheel"); - Assert.assertEquals(rusty.getAge(),1); + assertEquals(rusty.getName(),"Rusty"); + assertEquals(rusty.getFavoriteGame(),"Wheel"); + assertEquals(rusty.getAge(),1); } @Test public void cat_makes_noise() { Cat felix = new Cat("Felix", 4); - Cat spot = new Cat("Spot","Salmon", 3); - System.out.println("Cats like " + usualFood()); + System.out.println("Felix goes " + felix.makeNoise()); + } + + @Test + public void dog_makes_noise() { + Dog fido = new Dog("Fido","bone", 5); + + System.out.println("Fido goes " + fido.makeNoise()); } + + @Test + public void pets_make_noise() { + Pet felix = new Cat("Felix",4); + Pet fido = new Dog("Fido", "bone", 5); + Pet rusty = new Hampster("Rusty", "wheels", 1); + + System.out.println("Felix goes " + felix.makeNoise()); + System.out.println("Fido goes " + fido.makeNoise()); + System.out.println("Rusty goes " + rusty.makeNoise()); + } + + @Test + public void pets_can_play() { + Pet felix = new Cat("Felix",4); + Pet fido = new Dog("Fido", "bone", 5); + Pet rusty = new Hampster("Rusty", "wheels", 1); + +// assertEquals(felix.play(), "plays with string"); +// assertEquals(fido.play(), "plays with bone"); +// assertEquals(rusty.play(), "runs in wheel"); + + } + } From c83f3dc036773dd39b3e00a49182f948fee8db78 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Mon, 27 Apr 2020 21:18:04 +0100 Subject: [PATCH 10/22] Sample solution --- src/main/java/com/serenitydojo/Cat.java | 5 +++++ src/main/java/com/serenitydojo/Dog.java | 5 +++++ src/main/java/com/serenitydojo/Hampster.java | 5 +++++ src/main/java/com/serenitydojo/Pet.java | 3 +++ src/test/java/com/serenitydojo/WhenCreatingObjects.java | 7 ++++--- 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/serenitydojo/Cat.java b/src/main/java/com/serenitydojo/Cat.java index 6ceb5de..84af9eb 100644 --- a/src/main/java/com/serenitydojo/Cat.java +++ b/src/main/java/com/serenitydojo/Cat.java @@ -44,6 +44,11 @@ public String makeNoise() { return CAT_NOISE; } + @Override + public String play() { + return "plays with string"; + } + public void feed(String food) { System.out.println(getName() + " eats some " + food); } diff --git a/src/main/java/com/serenitydojo/Dog.java b/src/main/java/com/serenitydojo/Dog.java index 828d66c..a12fc6f 100644 --- a/src/main/java/com/serenitydojo/Dog.java +++ b/src/main/java/com/serenitydojo/Dog.java @@ -10,6 +10,11 @@ public Dog(String name, String favoriteToy, int age) { this.age = age; } + @Override + public String play() { + return "plays with bone"; + } + public String getFavoriteToy() { return favoriteToy; } diff --git a/src/main/java/com/serenitydojo/Hampster.java b/src/main/java/com/serenitydojo/Hampster.java index dc36682..445d15a 100644 --- a/src/main/java/com/serenitydojo/Hampster.java +++ b/src/main/java/com/serenitydojo/Hampster.java @@ -18,6 +18,11 @@ public int getAge() { return age; } + @Override + public String play() { + return "runs in wheel"; + } + @Override public String makeNoise() { return "Squeak"; diff --git a/src/main/java/com/serenitydojo/Pet.java b/src/main/java/com/serenitydojo/Pet.java index b9c71c3..eb6c450 100644 --- a/src/main/java/com/serenitydojo/Pet.java +++ b/src/main/java/com/serenitydojo/Pet.java @@ -2,6 +2,8 @@ public abstract class Pet { private String name; + private int age; + public Pet(String name) { this.name = name; @@ -12,4 +14,5 @@ public String getName() { public String goForWalks() { return "walk walk walk"; } public abstract String makeNoise(); + public abstract String play(); } diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java index ec85fe2..e3c2076 100644 --- a/src/test/java/com/serenitydojo/WhenCreatingObjects.java +++ b/src/test/java/com/serenitydojo/WhenCreatingObjects.java @@ -65,13 +65,14 @@ public void pets_make_noise() { @Test public void pets_can_play() { + Pet felix = new Cat("Felix",4); Pet fido = new Dog("Fido", "bone", 5); Pet rusty = new Hampster("Rusty", "wheels", 1); -// assertEquals(felix.play(), "plays with string"); -// assertEquals(fido.play(), "plays with bone"); -// assertEquals(rusty.play(), "runs in wheel"); + assertEquals(felix.play(), "plays with string"); + assertEquals(fido.play(), "plays with bone"); + assertEquals(rusty.play(), "runs in wheel"); } From 8eb82f4f2aac6da8c88658aa4e90b01eb06f0156 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Thu, 30 Apr 2020 11:19:14 +0100 Subject: [PATCH 11/22] Sample code for conditionals --- .../java/com/serenitydojo/model/Feeder.java | 14 ++++++ .../serenitydojo/WhenFeedingTheAnimals.java | 45 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/main/java/com/serenitydojo/model/Feeder.java create mode 100644 src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java diff --git a/src/main/java/com/serenitydojo/model/Feeder.java b/src/main/java/com/serenitydojo/model/Feeder.java new file mode 100644 index 0000000..d6e8f1a --- /dev/null +++ b/src/main/java/com/serenitydojo/model/Feeder.java @@ -0,0 +1,14 @@ +package com.serenitydojo.model; + +public class Feeder { + public String feeds(String animal, boolean isPremium) { + if (animal.equals("Cat")) { + return (isPremium) ? "Salmon" : "Tuna"; + } else if (animal.equals("Dog")) { + return "Dog Food"; + } + + return "Cabbage"; + + } +} diff --git a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java new file mode 100644 index 0000000..561d46a --- /dev/null +++ b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java @@ -0,0 +1,45 @@ +package com.serenitydojo; + +import com.serenitydojo.model.Feeder; +import org.junit.Assert; +import org.junit.Test; + +public class WhenFeedingTheAnimals { + + @Test + public void shouldFeedCatsTuna() { + Feeder feeder = new Feeder(); + + String food = feeder.feeds("Cat", false); + + Assert.assertEquals("Tuna", food); + } + + @Test + public void shouldFeedHamstersCabbage() { + Feeder feeder = new Feeder(); + + String food = feeder.feeds("Hamster", false); + + Assert.assertEquals("Cabbage", food); + } + + @Test + public void shouldFeedDogsDogFood() { + Feeder feeder = new Feeder(); + + String food = feeder.feeds("Dog", false); + + Assert.assertEquals("Dog Food", food); + } + + @Test + public void shouldFeedPremiumCatsPremiumFood() { + Feeder feeder = new Feeder(); + + String food = feeder.feeds("Cat", true); + + Assert.assertEquals("Salmon", food); + + } +} From 0eb1fcb582b1aca9d2925d673e1b8f570164f8cb Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Thu, 30 Apr 2020 11:34:05 +0100 Subject: [PATCH 12/22] Sample solution --- .../java/com/serenitydojo/model/Feeder.java | 7 +++---- .../serenitydojo/WhenFeedingTheAnimals.java | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/serenitydojo/model/Feeder.java b/src/main/java/com/serenitydojo/model/Feeder.java index d6e8f1a..ca3723e 100644 --- a/src/main/java/com/serenitydojo/model/Feeder.java +++ b/src/main/java/com/serenitydojo/model/Feeder.java @@ -5,10 +5,9 @@ public String feeds(String animal, boolean isPremium) { if (animal.equals("Cat")) { return (isPremium) ? "Salmon" : "Tuna"; } else if (animal.equals("Dog")) { - return "Dog Food"; + return (isPremium) ? "Deluxe Dog Food" : "Dog Food"; + } else { + return (isPremium) ? "Lettuce" : "Cabbage"; } - - return "Cabbage"; - } } diff --git a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java index 561d46a..e1a798e 100644 --- a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java +++ b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java @@ -40,6 +40,24 @@ public void shouldFeedPremiumCatsPremiumFood() { String food = feeder.feeds("Cat", true); Assert.assertEquals("Salmon", food); + } + + @Test + public void shouldFeedPremiumDogsDeluxeDogFood() { + Feeder feeder = new Feeder(); + + String food = feeder.feeds("Dog", true); + + Assert.assertEquals("Deluxe Dog Food", food); + } + + @Test + public void shouldFeedPremiumHamstersLettuce() { + Feeder feeder = new Feeder(); + + String food = feeder.feeds("Hamster", true); + Assert.assertEquals("Lettuce", food); } + } From 1b42e3496459df7d917c720a9333345af3da99bf Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Thu, 30 Apr 2020 14:40:07 +0100 Subject: [PATCH 13/22] Exercise starting point --- .../com/serenitydojo/model/AnimalType.java | 5 +++++ .../java/com/serenitydojo/model/Feeder.java | 18 +++++++++++------- .../serenitydojo/WhenFeedingTheAnimals.java | 15 +++++++++------ 3 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/serenitydojo/model/AnimalType.java diff --git a/src/main/java/com/serenitydojo/model/AnimalType.java b/src/main/java/com/serenitydojo/model/AnimalType.java new file mode 100644 index 0000000..792bfc3 --- /dev/null +++ b/src/main/java/com/serenitydojo/model/AnimalType.java @@ -0,0 +1,5 @@ +package com.serenitydojo.model; + +public enum AnimalType { + CAT, DOG, HAMSTER, FISH, LLAMA +} diff --git a/src/main/java/com/serenitydojo/model/Feeder.java b/src/main/java/com/serenitydojo/model/Feeder.java index ca3723e..ff80acc 100644 --- a/src/main/java/com/serenitydojo/model/Feeder.java +++ b/src/main/java/com/serenitydojo/model/Feeder.java @@ -1,13 +1,17 @@ package com.serenitydojo.model; public class Feeder { - public String feeds(String animal, boolean isPremium) { - if (animal.equals("Cat")) { - return (isPremium) ? "Salmon" : "Tuna"; - } else if (animal.equals("Dog")) { - return (isPremium) ? "Deluxe Dog Food" : "Dog Food"; - } else { - return (isPremium) ? "Lettuce" : "Cabbage"; + public String feeds(AnimalType animal, boolean isPremium) { + + switch (animal) { + case CAT: + return (isPremium) ? "Salmon" : "Tuna"; + case DOG: + return (isPremium) ? "Deluxe Dog Food" : "Dog Food"; + case HAMSTER: + return (isPremium) ? "Lettuce" : "Cabbage"; + default: + return "Don't know this animal - don't know the food"; } } } diff --git a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java index e1a798e..67d0764 100644 --- a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java +++ b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java @@ -1,16 +1,19 @@ package com.serenitydojo; +import com.serenitydojo.model.AnimalType; import com.serenitydojo.model.Feeder; import org.junit.Assert; import org.junit.Test; +import static com.serenitydojo.model.AnimalType.*; + public class WhenFeedingTheAnimals { @Test public void shouldFeedCatsTuna() { Feeder feeder = new Feeder(); - String food = feeder.feeds("Cat", false); + String food = feeder.feeds(CAT, false); Assert.assertEquals("Tuna", food); } @@ -19,7 +22,7 @@ public void shouldFeedCatsTuna() { public void shouldFeedHamstersCabbage() { Feeder feeder = new Feeder(); - String food = feeder.feeds("Hamster", false); + String food = feeder.feeds(HAMSTER, false); Assert.assertEquals("Cabbage", food); } @@ -28,7 +31,7 @@ public void shouldFeedHamstersCabbage() { public void shouldFeedDogsDogFood() { Feeder feeder = new Feeder(); - String food = feeder.feeds("Dog", false); + String food = feeder.feeds(DOG, false); Assert.assertEquals("Dog Food", food); } @@ -37,7 +40,7 @@ public void shouldFeedDogsDogFood() { public void shouldFeedPremiumCatsPremiumFood() { Feeder feeder = new Feeder(); - String food = feeder.feeds("Cat", true); + String food = feeder.feeds(CAT, true); Assert.assertEquals("Salmon", food); } @@ -46,7 +49,7 @@ public void shouldFeedPremiumCatsPremiumFood() { public void shouldFeedPremiumDogsDeluxeDogFood() { Feeder feeder = new Feeder(); - String food = feeder.feeds("Dog", true); + String food = feeder.feeds(DOG, true); Assert.assertEquals("Deluxe Dog Food", food); } @@ -55,7 +58,7 @@ public void shouldFeedPremiumDogsDeluxeDogFood() { public void shouldFeedPremiumHamstersLettuce() { Feeder feeder = new Feeder(); - String food = feeder.feeds("Hamster", true); + String food = feeder.feeds(HAMSTER, true); Assert.assertEquals("Lettuce", food); } From de3b82d183da979f83e0855b0536d4e1752dd009 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Thu, 30 Apr 2020 14:51:54 +0100 Subject: [PATCH 14/22] Sample solution --- .../java/com/serenitydojo/model/Feeder.java | 10 ++++---- .../java/com/serenitydojo/model/FoodType.java | 5 ++++ .../serenitydojo/WhenFeedingTheAnimals.java | 25 ++++++++++--------- 3 files changed, 23 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/serenitydojo/model/FoodType.java diff --git a/src/main/java/com/serenitydojo/model/Feeder.java b/src/main/java/com/serenitydojo/model/Feeder.java index ff80acc..d037ff4 100644 --- a/src/main/java/com/serenitydojo/model/Feeder.java +++ b/src/main/java/com/serenitydojo/model/Feeder.java @@ -1,17 +1,17 @@ package com.serenitydojo.model; public class Feeder { - public String feeds(AnimalType animal, boolean isPremium) { + public FoodType feeds(AnimalType animal, boolean isPremium) { switch (animal) { case CAT: - return (isPremium) ? "Salmon" : "Tuna"; + return (isPremium) ? FoodType.SALMON : FoodType.TUNA; case DOG: - return (isPremium) ? "Deluxe Dog Food" : "Dog Food"; + return (isPremium) ? FoodType.DELUXE_DOG_FOOD : FoodType.DOG_FOOD; case HAMSTER: - return (isPremium) ? "Lettuce" : "Cabbage"; + return (isPremium) ? FoodType.LETTUCE : FoodType.CABBAGE; default: - return "Don't know this animal - don't know the food"; + return FoodType.UNKNOWN; } } } diff --git a/src/main/java/com/serenitydojo/model/FoodType.java b/src/main/java/com/serenitydojo/model/FoodType.java new file mode 100644 index 0000000..c1e4501 --- /dev/null +++ b/src/main/java/com/serenitydojo/model/FoodType.java @@ -0,0 +1,5 @@ +package com.serenitydojo.model; + +public enum FoodType { + TUNA, CABBAGE, LETTUCE, SALMON, DOG_FOOD, DELUXE_DOG_FOOD, UNKNOWN +} diff --git a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java index 67d0764..815e090 100644 --- a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java +++ b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java @@ -2,6 +2,7 @@ import com.serenitydojo.model.AnimalType; import com.serenitydojo.model.Feeder; +import com.serenitydojo.model.FoodType; import org.junit.Assert; import org.junit.Test; @@ -13,54 +14,54 @@ public class WhenFeedingTheAnimals { public void shouldFeedCatsTuna() { Feeder feeder = new Feeder(); - String food = feeder.feeds(CAT, false); + FoodType food = feeder.feeds(CAT, false); - Assert.assertEquals("Tuna", food); + Assert.assertEquals(FoodType.TUNA, food); } @Test public void shouldFeedHamstersCabbage() { Feeder feeder = new Feeder(); - String food = feeder.feeds(HAMSTER, false); + FoodType food = feeder.feeds(HAMSTER, false); - Assert.assertEquals("Cabbage", food); + Assert.assertEquals(FoodType.CABBAGE, food); } @Test public void shouldFeedDogsDogFood() { Feeder feeder = new Feeder(); - String food = feeder.feeds(DOG, false); + FoodType food = feeder.feeds(DOG, false); - Assert.assertEquals("Dog Food", food); + Assert.assertEquals(FoodType.DOG_FOOD, food); } @Test public void shouldFeedPremiumCatsPremiumFood() { Feeder feeder = new Feeder(); - String food = feeder.feeds(CAT, true); + FoodType food = feeder.feeds(CAT, true); - Assert.assertEquals("Salmon", food); + Assert.assertEquals(FoodType.SALMON, food); } @Test public void shouldFeedPremiumDogsDeluxeDogFood() { Feeder feeder = new Feeder(); - String food = feeder.feeds(DOG, true); + FoodType food = feeder.feeds(DOG, true); - Assert.assertEquals("Deluxe Dog Food", food); + Assert.assertEquals(FoodType.DELUXE_DOG_FOOD, food); } @Test public void shouldFeedPremiumHamstersLettuce() { Feeder feeder = new Feeder(); - String food = feeder.feeds(HAMSTER, true); + FoodType food = feeder.feeds(HAMSTER, true); - Assert.assertEquals("Lettuce", food); + Assert.assertEquals(FoodType.LETTUCE, food); } } From 03d821db4960aad1fd68211b1321aea05938fc7a Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Sat, 23 May 2020 09:24:38 +0100 Subject: [PATCH 15/22] Exerise starting point --- pom.xml | 5 + .../WhenWritingReadableAssertions.java | 123 ++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 src/test/java/com/serenitydojo/assertions/WhenWritingReadableAssertions.java diff --git a/pom.xml b/pom.xml index 8171c1a..b53afa7 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,11 @@ 4.13 test + + org.assertj + assertj-core + 3.15.0 + diff --git a/src/test/java/com/serenitydojo/assertions/WhenWritingReadableAssertions.java b/src/test/java/com/serenitydojo/assertions/WhenWritingReadableAssertions.java new file mode 100644 index 0000000..b81d41f --- /dev/null +++ b/src/test/java/com/serenitydojo/assertions/WhenWritingReadableAssertions.java @@ -0,0 +1,123 @@ +package com.serenitydojo.assertions; + +import org.assertj.core.data.Percentage; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class WhenWritingReadableAssertions { + + @Test + public void whenTwoNumbersAreEqual() { + int a = 5; + int b = 10; + int c = 20; + int sum = a + b + c; + + // Check that the sum is 35 + } + + @Test + public void whenANumberIsGreaterThanAnother() { + int a = 5; + int b = 10; + int c = 20; + int sum = a + b + c; + + // Check that the sum is greater than 30 + } + + @Test + public void whenANumberIsInACertainInterval() { + int a = 5; + int b = 10; + int sum = a + b; + + // Check that the sum is between 10 and 20 + } + + @Test + public void whenANumberIsCloseToAnotherValue() { + double roughlyOneHundred = 99; + + // Check that the sum is within 10% of 100 + } + + @Test + public void whenAStringIsEqualToAnother() { + String color = "red"; + + // Check that the string has a value of 'red' + } + + @Test + public void whenAStringIsEqualIgnoringCase() { + String color = "RED"; + + // Check that the string has a value of 'red' (ignoring case) + } + + @Test + public void whenAStringContainsOnlyDigits() { + String licenseNumber = "12345"; + + // Check that the value contains only digits + } + + @Test + public void whenAStringStartsWithAValue() { + String colors = "red,green,blue"; + + // Check that the value starts with 'red' + } + + @Test + public void whenAStringEndsWithAValue() { + String colors = "red,green,blue"; + + // Check that the value ends with 'blue' + } + + + @Test + public void whenAListContainsAValue() { + List colors = Arrays.asList("red","green","blue"); + + // Check that the list contains "red" + } + + @Test + public void whenAListContainsASetOfValues() { + List colors = Arrays.asList("red","green","blue"); + + // Check that the list contains "red" and "blue + } + + @Test + public void whenAListHasASpecificSize() { + List colors = Arrays.asList("red","green","blue"); + + // Check that the list contains 3 elements + } + + @Test + public void whenAListContainsExactlyASetOfValues() { + List colors = Arrays.asList("red","green","blue"); + + // Check that the list contains "red","green" and "blue" in any order + } + + @Test + public void whenAListContainsExactlyASetOfValuesInAnyOrder() { + List colors = Arrays.asList("red","green","blue"); + + // Check that the list contains "red","blue" and "green" in any order + } + + + + +} From 97ba7f34b59fecc63f6c4689288846c6ee83e1e2 Mon Sep 17 00:00:00 2001 From: gift77 <68633017+gift77@users.noreply.github.com> Date: Wed, 9 Jun 2021 21:46:33 +0200 Subject: [PATCH 16/22] update files --- .../com/serenitydojo/WhenWOrkingWithMaps.java | 58 +++++++++ .../WhenWorkingWithJavaLists.java | 115 ++++++++++++++++++ .../assertiondemo/WhenAddingNumbers.java | 34 ++++++ 3 files changed, 207 insertions(+) create mode 100644 src/test/java/com/serenitydojo/WhenWOrkingWithMaps.java create mode 100644 src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java create mode 100644 src/test/java/com/serenitydojo/assertiondemo/WhenAddingNumbers.java diff --git a/src/test/java/com/serenitydojo/WhenWOrkingWithMaps.java b/src/test/java/com/serenitydojo/WhenWOrkingWithMaps.java new file mode 100644 index 0000000..146f4a1 --- /dev/null +++ b/src/test/java/com/serenitydojo/WhenWOrkingWithMaps.java @@ -0,0 +1,58 @@ +package com.serenitydojo; + +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + +public class WhenWOrkingWithMaps { + @Test + public void workingwithMaps(){ + Map numberOfBallsWithColors = new HashMap<>(); + numberOfBallsWithColors.put("red",3); + numberOfBallsWithColors.put("green",6); + numberOfBallsWithColors.put("blue",10); + + Integer numberOfRedBalls = numberOfBallsWithColors.get("red"); + System.out.println("number of red balls is " + numberOfRedBalls); + } + @Test + public void creatingAMapConcisely(){ + Map numberOfBallsWithColors = Map.of("red",3,"green",6,"blue",5); + + Map moreColors = new HashMap<>(); + moreColors.put("yellow",10); + moreColors.putAll(numberOfBallsWithColors); + + moreColors.put("yellow",20); + moreColors.replace("pink",15); + System.out.println("number of pink balls is " + moreColors.getOrDefault("pink",0)); + + //System.out.println("purple colors are presents :" + moreColors.containsKey("purple")); + + + } + @Test + public void iteratingOverMapKeys(){ + Map numberOfBallsByColors = Map.of("red",3,"green",6,"blue",5); + //System.out.println(numberOfBallsByColors.keySet()); + + for(String Key : numberOfBallsByColors.keySet()){ + Integer numberOfTennisBalls = numberOfBallsByColors.get(Key); + System.out.println(numberOfTennisBalls); + } + for(Map.Entry entry : numberOfBallsByColors.entrySet()){ + System.out.println(entry); + } + Map moreBalls = new HashMap<>(); + moreBalls.putAll(numberOfBallsByColors); + moreBalls.remove("red"); + System.out.println(moreBalls); + + } + + + + + +} diff --git a/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java b/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java new file mode 100644 index 0000000..ea62ba5 --- /dev/null +++ b/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java @@ -0,0 +1,115 @@ +package com.serenitydojo; +import org.assertj.core.api.Assertions; +import org.junit.Assert; +import org.junit.Test; + +import java.util.*; + +import static org.assertj.core.api.Assertions.assertThat; + + +public class WhenWorkingWithJavaLists { + @Test + public void creatingASimpleList(){ + List simpleList = new ArrayList(); + simpleList.add("this is a simple list"); + simpleList.add(123); + assertThat(simpleList).contains("this is a simple list",123); + + + } + @Test + public void creatATypedList(){ + List names = Arrays.asList("joe","sally","pete"); + List ages = Arrays.asList(10,20,20); + assertThat(names).contains("joe","sally","pete"); + + List favoriteNumbers = Arrays.asList(10,20,30,10000000l,4.4); + assertThat(favoriteNumbers).contains(10,20,30,10000000l,4.4); + } + @Test + public void removingStuff(){ + List names = new ArrayList<>(); + names.add("joe"); + names.add("mike"); + names.add("tim"); + + names.remove("joe"); + assertThat(names).contains("mike","tim"); + names.clear(); + assertThat(names).isEmpty(); + } + @Test + public void combiningLists(){ + List names = new ArrayList<>(); + names.add("joe"); + names.add("sally"); + names.add("pete"); + + ListmoreNames = new ArrayList<>(); + names.add("paul"); + names.add("petra"); + + names.addAll(moreNames); + assertThat(names).contains("joe","sally","pete","paul","petra"); + + names.removeAll(moreNames); + + + + + names.remove("joe"); + assertThat(names).contains("mike","tim"); + names.clear(); + assertThat(names).isEmpty(); + } + @Test + public void immutableList(){ + List names = Arrays.asList("joe","mike","tim");// these are fixed lists, can not add or remove + names.remove("joe"); + names.add("paul"); + + } + @Test + public void findElementInAList(){ + List names = Arrays.asList("joe","Sally","Pete","Sally","Paul"); + int indexOfSally = names.indexOf("Sally"); + int lastIndexOfSally = names.lastIndexOf("Sally"); + + assertThat(indexOfSally).isEqualTo(1); + assertThat(lastIndexOfSally).isEqualTo(3); + } + @Test + public void findingASubList(){ + List names = Arrays.asList("joe","sally","paul"); + ListmiddleNames = names.subList(1,2); + assertThat(names).contains("joe","sally","paul"); + } + @Test + public void findingTheSize(){ + List names = Arrays.asList("joe","sally","paul"); + assertThat(names.size()).isEqualTo(3); + } + @Test + public void convertingAListToAset(){ + Listnames = Arrays.asList("joe","sally","pete","sally","paul"); + Set uniqueNames = new HashSet<>(names); + assertThat(uniqueNames).containsExactlyInAnyOrder("joe,sally","pete","paul"); + } + @Test + public void sortingAList(){ + Listnames = Arrays.asList("joe","sally","pete","sally","paul"); + Collections.sort(names); + assertThat(names).containsExactly("joe","paul","pete","sally","sally"); + + } + @Test + public void findingMaxAndMin(){ + List ages = Arrays.asList(15,10,50,30,20); + assertThat(Collections.max(ages)).isEqualTo(50); + assertThat(Collections.min(ages)).isEqualTo(10); + + } + + +} diff --git a/src/test/java/com/serenitydojo/assertiondemo/WhenAddingNumbers.java b/src/test/java/com/serenitydojo/assertiondemo/WhenAddingNumbers.java new file mode 100644 index 0000000..cff1af1 --- /dev/null +++ b/src/test/java/com/serenitydojo/assertiondemo/WhenAddingNumbers.java @@ -0,0 +1,34 @@ +package com.serenitydojo.assertiondemo; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class WhenAddingNumbers { + @Test + public void shouldAddTwoIntegersCorrectly(){ +// int a =1; +// int b =2; +// +// int sum = a+b; +// assertThat(sum).isEqualTo(4); + + String color = "red"; + String anotherColor = "Red"; + + assertThat(color).isEqualToIgnoringCase(anotherColor); + + List colors = Arrays.asList("red","green","blue"); + assertThat(colors).hasSize(3); + assertThat(colors).contains("green"); + assertThat(colors).containsExactly("red","green","blue"); + assertThat(colors).containsExactlyInAnyOrder("blue","green","red"); + + + + } + +} From ff51da3cbb046c1b03f6da7da910fb870494e85e Mon Sep 17 00:00:00 2001 From: gift77 <68633017+gift77@users.noreply.github.com> Date: Wed, 9 Jun 2021 21:49:18 +0200 Subject: [PATCH 17/22] update of dojo exercise --- pom.xml | 23 +++++++- .../com/serenitydojo/model/AnimalType.java | 2 +- .../java/com/serenitydojo/model/FoodType.java | 2 +- .../serenitydojo/WhenFeedingTheAnimals.java | 53 +++++++------------ .../WhenWritingReadableAssertions.java | 44 ++++++--------- 5 files changed, 60 insertions(+), 64 deletions(-) diff --git a/pom.xml b/pom.xml index b53afa7..629c5ac 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,6 @@ 1.8 1.8 - junit @@ -29,8 +28,20 @@ assertj-core 3.15.0 + + org.assertj + assertj-core + 3.19.0 + + + com.serenitydojo + java-for-testers + 1.0.0-SNAPSHOT + test + + @@ -75,5 +86,15 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + + diff --git a/src/main/java/com/serenitydojo/model/AnimalType.java b/src/main/java/com/serenitydojo/model/AnimalType.java index 792bfc3..3648413 100644 --- a/src/main/java/com/serenitydojo/model/AnimalType.java +++ b/src/main/java/com/serenitydojo/model/AnimalType.java @@ -1,5 +1,5 @@ package com.serenitydojo.model; public enum AnimalType { - CAT, DOG, HAMSTER, FISH, LLAMA + CAT, DOG, HAMSTER, FISH, Hamster, Dog, Cat, LLAMA } diff --git a/src/main/java/com/serenitydojo/model/FoodType.java b/src/main/java/com/serenitydojo/model/FoodType.java index c1e4501..c79d6a7 100644 --- a/src/main/java/com/serenitydojo/model/FoodType.java +++ b/src/main/java/com/serenitydojo/model/FoodType.java @@ -1,5 +1,5 @@ package com.serenitydojo.model; public enum FoodType { - TUNA, CABBAGE, LETTUCE, SALMON, DOG_FOOD, DELUXE_DOG_FOOD, UNKNOWN + TUNA, CABBAGE, LETTUCE, SALMON, DOG_FOOD, DELUXE_DOG_FOOD, Tuna, Cabbage, Dogs_Food, Salmon, Deluxe_Dog_Food, Lettuce, UNKNOWN } diff --git a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java index 815e090..d5f437a 100644 --- a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java +++ b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java @@ -1,67 +1,54 @@ package com.serenitydojo; - import com.serenitydojo.model.AnimalType; import com.serenitydojo.model.Feeder; import com.serenitydojo.model.FoodType; import org.junit.Assert; import org.junit.Test; - import static com.serenitydojo.model.AnimalType.*; +import static com.serenitydojo.model.FoodType.*; public class WhenFeedingTheAnimals { @Test - public void shouldFeedCatsTuna() { + public void shouldFeedCatsTuna(){ Feeder feeder = new Feeder(); + FoodType food = feeder.feeds(Cat,false); + Assert.assertEquals(Tuna, food); - FoodType food = feeder.feeds(CAT, false); - - Assert.assertEquals(FoodType.TUNA, food); } - @Test - public void shouldFeedHamstersCabbage() { + public void shouldFeedHamsterCabbage(){ Feeder feeder = new Feeder(); + FoodType food = feeder.feeds(Hamster,false); + Assert.assertEquals(Cabbage, food); - FoodType food = feeder.feeds(HAMSTER, false); - - Assert.assertEquals(FoodType.CABBAGE, food); } @Test - public void shouldFeedDogsDogFood() { + public void shouldFeedDogsDogFood(){ Feeder feeder = new Feeder(); + FoodType food = feeder.feeds(Dog, false); + Assert.assertEquals(Dogs_Food, food); - FoodType food = feeder.feeds(DOG, false); - - Assert.assertEquals(FoodType.DOG_FOOD, food); } - @Test - public void shouldFeedPremiumCatsPremiumFood() { + public void shouldFeedPremiumCatsPremiumFood(){ Feeder feeder = new Feeder(); + FoodType food = feeder.feeds(Cat,true); + Assert.assertEquals(Salmon, food); - FoodType food = feeder.feeds(CAT, true); - - Assert.assertEquals(FoodType.SALMON, food); } - @Test - public void shouldFeedPremiumDogsDeluxeDogFood() { + public void shouldFeedPremiumDogsPremiumFood() { Feeder feeder = new Feeder(); - - FoodType food = feeder.feeds(DOG, true); - - Assert.assertEquals(FoodType.DELUXE_DOG_FOOD, food); + FoodType food = feeder.feeds(Dog, true); + Assert.assertEquals(Deluxe_Dog_Food, food); } - @Test - public void shouldFeedPremiumHamstersLettuce() { + public void shouldFeedPremiumHamsterPremiumFood() { Feeder feeder = new Feeder(); - - FoodType food = feeder.feeds(HAMSTER, true); - - Assert.assertEquals(FoodType.LETTUCE, food); + FoodType food = feeder.feeds(Hamster, true); + Assert.assertEquals(Lettuce, food); } - } + diff --git a/src/test/java/com/serenitydojo/assertions/WhenWritingReadableAssertions.java b/src/test/java/com/serenitydojo/assertions/WhenWritingReadableAssertions.java index b81d41f..0b65ccf 100644 --- a/src/test/java/com/serenitydojo/assertions/WhenWritingReadableAssertions.java +++ b/src/test/java/com/serenitydojo/assertions/WhenWritingReadableAssertions.java @@ -7,6 +7,7 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.data.Percentage.*; public class WhenWritingReadableAssertions { @@ -15,9 +16,9 @@ public void whenTwoNumbersAreEqual() { int a = 5; int b = 10; int c = 20; - int sum = a + b + c; - // Check that the sum is 35 + int sum = a + b + c; + assertThat(sum).isEqualTo(35); } @Test @@ -26,8 +27,7 @@ public void whenANumberIsGreaterThanAnother() { int b = 10; int c = 20; int sum = a + b + c; - - // Check that the sum is greater than 30 + assertThat(sum).isGreaterThan(30); } @Test @@ -35,86 +35,74 @@ public void whenANumberIsInACertainInterval() { int a = 5; int b = 10; int sum = a + b; - - // Check that the sum is between 10 and 20 + assertThat(sum).isBetween(10,20); } @Test public void whenANumberIsCloseToAnotherValue() { double roughlyOneHundred = 99; - - // Check that the sum is within 10% of 100 + assertThat(roughlyOneHundred).isCloseTo(100, withPercentage(10)); } @Test public void whenAStringIsEqualToAnother() { String color = "red"; - - // Check that the string has a value of 'red' + assertThat(color).contains("red"); } @Test public void whenAStringIsEqualIgnoringCase() { String color = "RED"; - - // Check that the string has a value of 'red' (ignoring case) + assertThat(color).containsIgnoringCase("red"); } @Test public void whenAStringContainsOnlyDigits() { String licenseNumber = "12345"; - - // Check that the value contains only digits + assertThat(licenseNumber).containsOnlyDigits(); } @Test public void whenAStringStartsWithAValue() { String colors = "red,green,blue"; - - // Check that the value starts with 'red' + assertThat(colors).startsWith("red"); } @Test public void whenAStringEndsWithAValue() { String colors = "red,green,blue"; - - // Check that the value ends with 'blue' + assertThat(colors).endsWith("blue"); } @Test public void whenAListContainsAValue() { List colors = Arrays.asList("red","green","blue"); - - // Check that the list contains "red" + assertThat(colors).contains("red"); } @Test public void whenAListContainsASetOfValues() { List colors = Arrays.asList("red","green","blue"); - - // Check that the list contains "red" and "blue + assertThat(colors).contains("red","blue"); } @Test public void whenAListHasASpecificSize() { List colors = Arrays.asList("red","green","blue"); - - // Check that the list contains 3 elements + assertThat(colors).hasSize(3); } @Test public void whenAListContainsExactlyASetOfValues() { List colors = Arrays.asList("red","green","blue"); - - // Check that the list contains "red","green" and "blue" in any order + assertThat(colors).containsExactlyInAnyOrder("red","green","blue"); } @Test public void whenAListContainsExactlyASetOfValuesInAnyOrder() { List colors = Arrays.asList("red","green","blue"); - - // Check that the list contains "red","blue" and "green" in any order + assertThat(colors).containsExactlyInAnyOrder("red","blue","green"); } From 8cbc98bb9b4c9542d8959c5dbc50176934d03c21 Mon Sep 17 00:00:00 2001 From: gift77 <68633017+gift77@users.noreply.github.com> Date: Mon, 6 Sep 2021 09:48:29 +0200 Subject: [PATCH 18/22] update file --- pom.xml | 16 ++++++++ .../exceptions/FileHasNoWordException.java | 5 +++ .../exceptions/WhenWorkingWithExceptions.java | 30 +++++++++++++++ .../serenitydojo/exceptions/WordCounter.java | 36 ++++++++++++++++++ src/main/resources/hello.txt | 1 + src/main/resources/no_words.txt | 0 .../com/serenitydojo/banking/BankAccount.java | 12 ++++++ .../serenitydojo/banking/CurrentAccount.java | 12 ++++++ .../banking/InterestYieldingBonds.java | 16 ++++++++ .../serenitydojo/banking/SavingsAccount.java | 15 ++++++++ .../WhenCalculatingMonthlyInterest.java | 37 +++++++++++++++++++ 11 files changed, 180 insertions(+) create mode 100644 src/main/java/com/serenitydojo/exceptions/FileHasNoWordException.java create mode 100644 src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java create mode 100644 src/main/java/com/serenitydojo/exceptions/WordCounter.java create mode 100644 src/main/resources/hello.txt create mode 100644 src/main/resources/no_words.txt create mode 100644 src/test/java/com/serenitydojo/banking/BankAccount.java create mode 100644 src/test/java/com/serenitydojo/banking/CurrentAccount.java create mode 100644 src/test/java/com/serenitydojo/banking/InterestYieldingBonds.java create mode 100644 src/test/java/com/serenitydojo/banking/SavingsAccount.java create mode 100644 src/test/java/com/serenitydojo/banking/WhenCalculatingMonthlyInterest.java diff --git a/pom.xml b/pom.xml index 629c5ac..03855d7 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,22 @@ 1.0.0-SNAPSHOT test + + orgit g.assertj + assertj-core + 3.15.0 + + + org.assertj + assertj-core + 3.19.0 + + + com.serenitydojo + java-for-testers + 1.0.0-SNAPSHOT + test + diff --git a/src/main/java/com/serenitydojo/exceptions/FileHasNoWordException.java b/src/main/java/com/serenitydojo/exceptions/FileHasNoWordException.java new file mode 100644 index 0000000..f3eb8a9 --- /dev/null +++ b/src/main/java/com/serenitydojo/exceptions/FileHasNoWordException.java @@ -0,0 +1,5 @@ +package com.serenitydojo.exceptions; + +public class FileHasNoWordException { + +} diff --git a/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java b/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java new file mode 100644 index 0000000..3148e76 --- /dev/null +++ b/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java @@ -0,0 +1,30 @@ +package com.serenitydojo.exceptions; + +import org.assertj.core.api.Assertions; +import org.junit.Assert; +import org.junit.Test; + +import java.io.IOException; + +public class WhenWorkingWithExceptions { + WordCounter wordCounter = new WordCounter(); + @Test + public void shouldCountWordsInAString(){ + int numbersOfWords = wordCounter.numbersOfWordsIn("word string"); + Assertions.assertThat(numbersOfWords).isEqualTo(2); + + } + @Test + public void shouldReturnZeroForAnullString(){ + Assertions.assertThat(wordCounter.numbersOfWordsIn(null)).isEqualTo(0); + } + @Test + public void shouldReturnNumberOfWordsInAFile() throws IOException { + int numbersOfWords = wordCounter.numbersOfWordsInAFile("src/main/resources/hello.txt"); + } + @Test + public void shouldReturnAnErrorIfTheFileDoesNotExist() throws IOException { + int numbersOfWords = wordCounter.numbersOfWordsInAFile("a-file-that-does-not-exist"); + Assertions.assertThat(numbersOfWords).isEqualTo(0); + } +} diff --git a/src/main/java/com/serenitydojo/exceptions/WordCounter.java b/src/main/java/com/serenitydojo/exceptions/WordCounter.java new file mode 100644 index 0000000..e85d2f0 --- /dev/null +++ b/src/main/java/com/serenitydojo/exceptions/WordCounter.java @@ -0,0 +1,36 @@ +package com.serenitydojo.exceptions; + +import org.assertj.core.api.Assertions; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Paths; + +public class WordCounter { + + public int numbersOfWordsIn(String value) { + if(value==null){ + return 0; + } + return value.split("\\W").length; + + + } + + public int numbersOfWordsInAFile(String fileName) { + try { + String fileContents = Files.readString(Paths.get(fileName)); + return numbersOfWordsIn(fileName); + } + catch (NoSuchFileException noSuchFile){ + return 0; + } + catch(IOException otherException){ + return -1; + } + finally { + System.out.println("file processed for " + fileName); + } + } +} diff --git a/src/main/resources/hello.txt b/src/main/resources/hello.txt new file mode 100644 index 0000000..95d09f2 --- /dev/null +++ b/src/main/resources/hello.txt @@ -0,0 +1 @@ +hello world \ No newline at end of file diff --git a/src/main/resources/no_words.txt b/src/main/resources/no_words.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/com/serenitydojo/banking/BankAccount.java b/src/test/java/com/serenitydojo/banking/BankAccount.java new file mode 100644 index 0000000..8355800 --- /dev/null +++ b/src/test/java/com/serenitydojo/banking/BankAccount.java @@ -0,0 +1,12 @@ +package com.serenitydojo.banking; + +public class BankAccount { + private double balance; + + public double getBalance(){ + return balance; + } + public void setBalance(double balance){ + this.balance = balance; + } +} diff --git a/src/test/java/com/serenitydojo/banking/CurrentAccount.java b/src/test/java/com/serenitydojo/banking/CurrentAccount.java new file mode 100644 index 0000000..2e2d85e --- /dev/null +++ b/src/test/java/com/serenitydojo/banking/CurrentAccount.java @@ -0,0 +1,12 @@ +package com.serenitydojo.banking; + +public class CurrentAccount { + private double overdraft; + + public double getOverdraft(){ + return overdraft; + } + public void setOverdraft(double overdraft){ + this.overdraft = overdraft; + } +} diff --git a/src/test/java/com/serenitydojo/banking/InterestYieldingBonds.java b/src/test/java/com/serenitydojo/banking/InterestYieldingBonds.java new file mode 100644 index 0000000..88e64c0 --- /dev/null +++ b/src/test/java/com/serenitydojo/banking/InterestYieldingBonds.java @@ -0,0 +1,16 @@ +package com.serenitydojo.banking; + +public class InterestYieldingBonds { + private double value; + private double interestRate; + + public InterestYieldingBonds(double value,double interestRate){ + this.value = value; + this.interestRate = interestRate; + } + + public double calculateMonthlyInterest(){ + return value * interestRate/12; + + } +} diff --git a/src/test/java/com/serenitydojo/banking/SavingsAccount.java b/src/test/java/com/serenitydojo/banking/SavingsAccount.java new file mode 100644 index 0000000..ba5b5f7 --- /dev/null +++ b/src/test/java/com/serenitydojo/banking/SavingsAccount.java @@ -0,0 +1,15 @@ +package com.serenitydojo.banking; + +public class SavingsAccount extends BankAccount { + private double interestRate; + + public double getInterestRate(){ + return interestRate; + } + public void setInterestRate(double interestRate){ + this.interestRate = interestRate; + } + public double calculateMonthlyInterest(){ + return interestRate * getBalance()/12; + } +} diff --git a/src/test/java/com/serenitydojo/banking/WhenCalculatingMonthlyInterest.java b/src/test/java/com/serenitydojo/banking/WhenCalculatingMonthlyInterest.java new file mode 100644 index 0000000..157945f --- /dev/null +++ b/src/test/java/com/serenitydojo/banking/WhenCalculatingMonthlyInterest.java @@ -0,0 +1,37 @@ +package com.serenitydojo.banking; + +import org.assertj.core.api.Assertions; +import org.junit.Assert; +import org.junit.Test; + +public class WhenCalculatingMonthlyInterest { + @Test + public void shouldCalculateInterestForSavingsAccount(){ + //Given + SavingsAccount savingsAccount = new SavingsAccount(); + savingsAccount.setBalance(1200); + savingsAccount.setInterestRate(0.01); + + //When + + double earnedInterest = savingsAccount.calculateMonthlyInterest(); + + //Then + Assertions.assertThat(earnedInterest).isEqualTo(1); + + + } + @Test + public void shouldCalculateInterestForBonds(){ + //Given + InterestYieldingBonds bonds = new InterestYieldingBonds(1200,0.01); + + //When + double earnedInterest = bonds.calculateMonthlyInterest(); + + //Then + Assertions.assertThat(earnedInterest).isEqualTo(1); + + + } +} From 4e4f0170fa4fc6d700e77b38988a402bc5001823 Mon Sep 17 00:00:00 2001 From: gift Date: Tue, 7 Sep 2021 08:35:12 +0200 Subject: [PATCH 19/22] update files --- pom.xml | 4 ++-- src/main/java/com/serenitydojo/exceptions/WordCounter.java | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 03855d7..ba33c19 100644 --- a/pom.xml +++ b/pom.xml @@ -107,8 +107,8 @@ org.apache.maven.plugins maven-compiler-plugin - 9 - 9 + 11 + 11 diff --git a/src/main/java/com/serenitydojo/exceptions/WordCounter.java b/src/main/java/com/serenitydojo/exceptions/WordCounter.java index e85d2f0..b61ea26 100644 --- a/src/main/java/com/serenitydojo/exceptions/WordCounter.java +++ b/src/main/java/com/serenitydojo/exceptions/WordCounter.java @@ -1,7 +1,5 @@ package com.serenitydojo.exceptions; -import org.assertj.core.api.Assertions; - import java.io.IOException; import java.nio.file.Files; import java.nio.file.NoSuchFileException; @@ -18,7 +16,7 @@ public int numbersOfWordsIn(String value) { } - public int numbersOfWordsInAFile(String fileName) { + public int numbersOfWordsInAFile(String fileName){ try { String fileContents = Files.readString(Paths.get(fileName)); return numbersOfWordsIn(fileName); From 425ddd1d129fc0da05ff819c22acbd7406aa51e5 Mon Sep 17 00:00:00 2001 From: gift Date: Fri, 17 Sep 2021 09:40:59 +0200 Subject: [PATCH 20/22] update maps and list --- pom.xml | 4 ++-- src/test/java/com/serenitydojo/WhenWOrkingWithMaps.java | 2 -- .../java/com/serenitydojo/WhenWorkingWithJavaLists.java | 6 ++---- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index ba33c19..03855d7 100644 --- a/pom.xml +++ b/pom.xml @@ -107,8 +107,8 @@ org.apache.maven.plugins maven-compiler-plugin - 11 - 11 + 9 + 9 diff --git a/src/test/java/com/serenitydojo/WhenWOrkingWithMaps.java b/src/test/java/com/serenitydojo/WhenWOrkingWithMaps.java index 146f4a1..3df5e37 100644 --- a/src/test/java/com/serenitydojo/WhenWOrkingWithMaps.java +++ b/src/test/java/com/serenitydojo/WhenWOrkingWithMaps.java @@ -1,7 +1,5 @@ package com.serenitydojo; - import org.junit.Test; - import java.util.HashMap; import java.util.Map; diff --git a/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java b/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java index ea62ba5..8e54295 100644 --- a/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java +++ b/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java @@ -2,10 +2,8 @@ import org.assertj.core.api.Assertions; import org.junit.Assert; import org.junit.Test; - import java.util.*; - -import static org.assertj.core.api.Assertions.assertThat; +import static org.hamcrest.MatcherAssert.assertThat; public class WhenWorkingWithJavaLists { @@ -15,7 +13,7 @@ public void creatingASimpleList(){ simpleList.add("this is a simple list"); simpleList.add(123); assertThat(simpleList).contains("this is a simple list",123); - +git } @Test From f2df6184c56f91c04e9bf0e478e7321c1301a74a Mon Sep 17 00:00:00 2001 From: gift Date: Tue, 21 Sep 2021 00:09:05 +0200 Subject: [PATCH 21/22] update files --- pom.xml | 12 ++++++++++++ .../exceptions/WhenWorkingWithExceptions.java | 1 + .../com/serenitydojo/WhenWorkingWithJavaLists.java | 3 +-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 03855d7..b727dcb 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,18 @@ 1.0.0-SNAPSHOT test + + junit + junit + 4.13 + compile + + + junit + junit + 4.13 + compile + diff --git a/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java b/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java index 3148e76..96139c6 100644 --- a/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java +++ b/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java @@ -26,5 +26,6 @@ public void shouldReturnNumberOfWordsInAFile() throws IOException { public void shouldReturnAnErrorIfTheFileDoesNotExist() throws IOException { int numbersOfWords = wordCounter.numbersOfWordsInAFile("a-file-that-does-not-exist"); Assertions.assertThat(numbersOfWords).isEqualTo(0); + } } diff --git a/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java b/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java index 8e54295..acfff05 100644 --- a/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java +++ b/src/test/java/com/serenitydojo/WhenWorkingWithJavaLists.java @@ -3,7 +3,7 @@ import org.junit.Assert; import org.junit.Test; import java.util.*; -import static org.hamcrest.MatcherAssert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; public class WhenWorkingWithJavaLists { @@ -13,7 +13,6 @@ public void creatingASimpleList(){ simpleList.add("this is a simple list"); simpleList.add(123); assertThat(simpleList).contains("this is a simple list",123); -git } @Test From 95bcee33a58a5effa3f1a2f1751be110a8f7dbfb Mon Sep 17 00:00:00 2001 From: gift-dot77 Date: Fri, 8 Oct 2021 16:20:08 +0200 Subject: [PATCH 22/22] changes made --- pom.xml | 20 +++++++++++++ .../exceptions/FileHasNoWordException.java | 9 +++++- .../exceptions/WhenWorkingWithExceptions.java | 30 ++++++++++++------- .../serenitydojo/exceptions/WordCounter.java | 23 +++++++------- 4 files changed, 58 insertions(+), 24 deletions(-) diff --git a/pom.xml b/pom.xml index b727dcb..2ed543a 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,18 @@ 4.13 compile + + org.junit.jupiter + junit-jupiter + RELEASE + compile + + + org.junit.jupiter + junit-jupiter + RELEASE + compile + @@ -123,6 +135,14 @@ 9 + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + diff --git a/src/main/java/com/serenitydojo/exceptions/FileHasNoWordException.java b/src/main/java/com/serenitydojo/exceptions/FileHasNoWordException.java index f3eb8a9..321bc23 100644 --- a/src/main/java/com/serenitydojo/exceptions/FileHasNoWordException.java +++ b/src/main/java/com/serenitydojo/exceptions/FileHasNoWordException.java @@ -1,5 +1,12 @@ package com.serenitydojo.exceptions; -public class FileHasNoWordException { +public class FileHasNoWordException extends RuntimeException{ + public FileHasNoWordException(String message){ + super(message); + } + public FileHasNoWordException(String message, Throwable cause){ + super(message,cause); + } + } diff --git a/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java b/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java index 96139c6..7221a46 100644 --- a/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java +++ b/src/main/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java @@ -1,31 +1,39 @@ package com.serenitydojo.exceptions; - import org.assertj.core.api.Assertions; import org.junit.Assert; import org.junit.Test; import java.io.IOException; +import java.nio.file.NoSuchFileException; public class WhenWorkingWithExceptions { WordCounter wordCounter = new WordCounter(); @Test public void shouldCountWordsInAString(){ - int numbersOfWords = wordCounter.numbersOfWordsIn("word string"); - Assertions.assertThat(numbersOfWords).isEqualTo(2); + int numberOfWords = wordCounter.numberOfWordsIn("some string"); + Assertions.assertThat(numberOfWords).isEqualTo(2); + } @Test - public void shouldReturnZeroForAnullString(){ - Assertions.assertThat(wordCounter.numbersOfWordsIn(null)).isEqualTo(0); + public void shouldReturnZeroForANullString(){ + Assertions.assertThat(wordCounter.numberOfWordsIn(null)).isEqualTo(0); + } @Test - public void shouldReturnNumberOfWordsInAFile() throws IOException { - int numbersOfWords = wordCounter.numbersOfWordsInAFile("src/main/resources/hello.txt"); + public void shouldCountWordsInAFile() throws Exception { + int numberOfWords = wordCounter.numberOfWordsInAfile("src/main/resources/hello.txt"); } - @Test - public void shouldReturnAnErrorIfTheFileDoesNotExist() throws IOException { - int numbersOfWords = wordCounter.numbersOfWordsInAFile("a-file-that-does-not-exist"); - Assertions.assertThat(numbersOfWords).isEqualTo(0); + @Test(expected = FileHasNoWordException.class) + public void shoulReportAnErrowIfThatFileDoesNotExist()throws Exception{ + int numberOfWords = wordCounter.numberOfWordsInAfile("file-that-does-not-exist.txt"); + } + @Test(expected = FileHasNoWordException.class) + public void shouldThrowMeaningfullExceptionIfThereAreNoWordsInAFile()throws Exception{ + int numberOfWords = wordCounter.numberOfWordsInAfile("src/main/resources/no_words.txt"); + Assertions.assertThat(numberOfWords).isEqualTo(0); + } + } diff --git a/src/main/java/com/serenitydojo/exceptions/WordCounter.java b/src/main/java/com/serenitydojo/exceptions/WordCounter.java index b61ea26..1569055 100644 --- a/src/main/java/com/serenitydojo/exceptions/WordCounter.java +++ b/src/main/java/com/serenitydojo/exceptions/WordCounter.java @@ -6,8 +6,7 @@ import java.nio.file.Paths; public class WordCounter { - - public int numbersOfWordsIn(String value) { + public int numberOfWordsIn(String value){ if(value==null){ return 0; } @@ -16,19 +15,19 @@ public int numbersOfWordsIn(String value) { } - public int numbersOfWordsInAFile(String fileName){ + public int numberOfWordsInAfile(String fileName) throws IOException { try { String fileContents = Files.readString(Paths.get(fileName)); - return numbersOfWordsIn(fileName); - } - catch (NoSuchFileException noSuchFile){ - return 0; + int wordCount = numberOfWordsIn(fileContents); + if(wordCount==0){ + throw new FileHasNoWordException("no words found in a file " + fileName); + } + return wordCount; } - catch(IOException otherException){ - return -1; - } - finally { - System.out.println("file processed for " + fileName); + catch(NoSuchFileException noSuchFile){ + throw new FileHasNoWordException("no words found in a non existing file " + fileName); + } + } }