From 501b03ab7238894034410a8ae8fd2884aa74a4ae Mon Sep 17 00:00:00 2001 From: Lloyd Blake Date: Sun, 15 Nov 2020 13:43:26 +0000 Subject: [PATCH 01/26] Added my project --- src/main/java/com/serenitydojo/HelloWorldWriter.java | 8 ++++++++ .../java/com/serenitydojo/HelloWorldWriterTest.java | 12 ++++++++++++ 2 files changed, 20 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..f026f83 --- /dev/null +++ b/src/main/java/com/serenitydojo/HelloWorldWriter.java @@ -0,0 +1,8 @@ +package com.serenitydojo; + +public class HelloWorldWriter { + + public void writeHelloWorld(){ + System.out.println("Hello World"); + } +} diff --git a/src/test/java/com/serenitydojo/HelloWorldWriterTest.java b/src/test/java/com/serenitydojo/HelloWorldWriterTest.java new file mode 100644 index 0000000..b9f0167 --- /dev/null +++ b/src/test/java/com/serenitydojo/HelloWorldWriterTest.java @@ -0,0 +1,12 @@ +package com.serenitydojo; + +import org.junit.Test; + +public class HelloWorldWriterTest { + @Test + public void shouldWriteHelloWorldToTheConsole(){ + HelloWorldWriter writer = new HelloWorldWriter(); + writer.writeHelloWorld(); + + } +} From c3c54fbe3ba24b7e4d422ef244533688c52e0466 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Fri, 17 Apr 2020 14:10:31 +0100 Subject: [PATCH 02/26] 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 b2f3c3c8bfe8705c5408120698dbfa68a5f6516f Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Mon, 20 Apr 2020 10:58:40 +0100 Subject: [PATCH 03/26] 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 c835b3f118832cea6575148fd85f477f9eb2ba0b Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Mon, 20 Apr 2020 11:44:24 +0100 Subject: [PATCH 04/26] 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 0eaa0eece5c9ae55606be348664145d844f92fa9 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Mon, 20 Apr 2020 11:46:28 +0100 Subject: [PATCH 05/26] 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 7598126df64a8fd6f75930ce90284a6e27aa6349 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Wed, 22 Apr 2020 08:53:28 +0100 Subject: [PATCH 06/26] 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 0e4905352b0e2ddbb23f607560777bd9bf1dc20a Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Wed, 22 Apr 2020 08:58:59 +0100 Subject: [PATCH 07/26] 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 c2e48618ef0b90a22c8ad8cc4d582e8d90b29aec Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Wed, 22 Apr 2020 09:26:31 +0100 Subject: [PATCH 08/26] 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 86cef35434eb3b6aebf63ef0b0aacbffa5f7c638 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Wed, 22 Apr 2020 09:34:26 +0100 Subject: [PATCH 09/26] 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 e84e91d7a7db818c4d389b3754faf1e3bc10547d Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Fri, 24 Apr 2020 08:12:19 +0100 Subject: [PATCH 10/26] 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 d32df53422b3dba48160479802c5c0fd79402179 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Mon, 27 Apr 2020 21:18:04 +0100 Subject: [PATCH 11/26] 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 e0dba7212dd492e2d2762f04af9ba7969a5ade1b Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Thu, 30 Apr 2020 11:19:14 +0100 Subject: [PATCH 12/26] 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 f762903134b97527fde3d576789e4b1e5a3ecd28 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Thu, 30 Apr 2020 11:34:05 +0100 Subject: [PATCH 13/26] 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 a89ca62c31ced7e9879a01fbaa59467179246c59 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Thu, 30 Apr 2020 14:40:07 +0100 Subject: [PATCH 14/26] 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 a1d16524f2017b1894c7efb7f8c5b0b8fca8cc4d Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Thu, 30 Apr 2020 14:51:54 +0100 Subject: [PATCH 15/26] 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 12bf488482a8d2ac50181135b6034f331c33c2aa Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Mon, 1 Jun 2020 22:51:56 +0100 Subject: [PATCH 16/26] sample maps --- .../maps/WhenWorkingWithMaps.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/test/java/com/serenitydojo/maps/WhenWorkingWithMaps.java diff --git a/src/test/java/com/serenitydojo/maps/WhenWorkingWithMaps.java b/src/test/java/com/serenitydojo/maps/WhenWorkingWithMaps.java new file mode 100644 index 0000000..d423be0 --- /dev/null +++ b/src/test/java/com/serenitydojo/maps/WhenWorkingWithMaps.java @@ -0,0 +1,21 @@ +package com.serenitydojo.maps; + +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + +public class WhenWorkingWithMaps { + + @Test + public void creatingAMap() { + Map numberOfBallsByColor = new HashMap<>(); + + numberOfBallsByColor.put("red",3); + numberOfBallsByColor.put("green",6); + numberOfBallsByColor.put("blue",5); + + Integer numberOfRedBalls = numberOfBallsByColor.get("red"); + System.out.println("There are " + numberOfRedBalls + " red balls"); + } +} From 4f80c8cfbd01526f967955b7d06dc550daf25259 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Tue, 2 Jun 2020 07:02:37 +0100 Subject: [PATCH 17/26] WIP --- pom.xml | 15 +++++ .../strings/WhenWorkingWithStrings.java | 64 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java diff --git a/pom.xml b/pom.xml index 8171c1a..a1c44be 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,11 @@ 4.13 test + + org.assertj + assertj-core + 3.16.1 + @@ -70,5 +75,15 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + + 10 + 10 + + + diff --git a/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java b/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java new file mode 100644 index 0000000..8f2c73a --- /dev/null +++ b/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java @@ -0,0 +1,64 @@ +package com.serenitydojo.strings; + +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class WhenWorkingWithStrings { + /** + * Adding strings together + */ + @Test + public void addingStringsTogether() { + + var colorA = "red"; + var colorB = "green"; + var colorC = "blue"; + + // TODO: turn these values into a comma separated list + var result = colorA + "," + colorB + "," + colorC; + + assertThat(result).isEqualTo("red,green,blue"); + } + + /** + * Take two strings (e.g. Duck, Orange) and return them in reverse order, separated by spaces + */ + @Test + public void reverseAPairOfStrings() { + + var result = reverse("Duck", "Orange"); + assertThat(result).isEqualTo("Orange Duck"); + + } + + /** + * Convert a list of words into capitalised form + */ + @Test + public void capitaliseWords() { + + var result = capitalise("RED", "green","BluE"); + assertThat(result).isEqualTo("Red Green Blue"); + } + + private String capitalise(String... words) { + StringBuffer result = new StringBuffer(); + for(var word : words) { + var upperCaseFirstLetter = word.substring(0,1).toUpperCase(); + var lowerCaseEnding = word.toLowerCase().substring(1); + var capitalisedWord = upperCaseFirstLetter + lowerCaseEnding; + result.append(capitalisedWord); + } + return result.toString(); + } + + @Test + public void reverseAListOfStrings() { + + } + + private String reverse(String a, String b) { + return b + " " + a; + } +} From b2881774279485182071895c7b3617ad55c2b5a5 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Tue, 2 Jun 2020 11:22:58 +0100 Subject: [PATCH 18/26] Sample code --- .../maps/WhenWorkingWithMaps.java | 21 ---- .../strings/WhenWorkingWithStrings.java | 100 +++++++++++++++++- 2 files changed, 96 insertions(+), 25 deletions(-) delete mode 100644 src/test/java/com/serenitydojo/maps/WhenWorkingWithMaps.java diff --git a/src/test/java/com/serenitydojo/maps/WhenWorkingWithMaps.java b/src/test/java/com/serenitydojo/maps/WhenWorkingWithMaps.java deleted file mode 100644 index d423be0..0000000 --- a/src/test/java/com/serenitydojo/maps/WhenWorkingWithMaps.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.serenitydojo.maps; - -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; - -public class WhenWorkingWithMaps { - - @Test - public void creatingAMap() { - Map numberOfBallsByColor = new HashMap<>(); - - numberOfBallsByColor.put("red",3); - numberOfBallsByColor.put("green",6); - numberOfBallsByColor.put("blue",5); - - Integer numberOfRedBalls = numberOfBallsByColor.get("red"); - System.out.println("There are " + numberOfRedBalls + " red balls"); - } -} diff --git a/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java b/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java index 8f2c73a..65c18ed 100644 --- a/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java +++ b/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java @@ -1,7 +1,12 @@ package com.serenitydojo.strings; +import org.assertj.core.api.Assertions; import org.junit.Test; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import static org.assertj.core.api.Assertions.assertThat; public class WhenWorkingWithStrings { @@ -29,7 +34,29 @@ public void reverseAPairOfStrings() { var result = reverse("Duck", "Orange"); assertThat(result).isEqualTo("Orange Duck"); + } + @Test + public void reverseAListOfStrings() { + var result = reverseList("Duck", "Orange"); + assertThat(result).containsExactly("Orange","Duck"); + } + + private String reverse(String... values) { + StringBuilder reversedValue = new StringBuilder(); + for(int i = values.length - 1; i >= 0; i--) { + reversedValue.append(values[i]); + reversedValue.append(" "); + } + return reversedValue.toString().trim(); + } + + private List reverseList(String... values) { + List reversed = new ArrayList<>(); + for(int i = values.length - 1; i >= 0; i--) { + reversed.add(values[i]); + } + return reversed; } /** @@ -49,16 +76,81 @@ private String capitalise(String... words) { var lowerCaseEnding = word.toLowerCase().substring(1); var capitalisedWord = upperCaseFirstLetter + lowerCaseEnding; result.append(capitalisedWord); + result.append(" "); } - return result.toString(); + return result.toString().trim(); } + /** + * Replace all of the red shirts by orange shirts + */ @Test - public void reverseAListOfStrings() { + public void colourSwitch() { + List colouredShirts = List.of("red shirt", "light red shirt", "blue shirt", "green shirt"); + + List updatedShirts = new ArrayList<>(); + for(String shirt : colouredShirts) { + updatedShirts.add(shirt.replace("red", "orange")); + } + assertThat(updatedShirts).containsExactly("orange shirt", "light orange shirt", "blue shirt", "green shirt"); } - private String reverse(String a, String b) { - return b + " " + a; + /** + * Find all the string values that contain red (reguardless of case) + */ + @Test + public void colourFilter() { + List terms = List.of("red", "Light Red", "Orange-red wash", "green","ruby red", "blue"); + + List reds = new ArrayList<>(); + + for(String color : terms) { + if (color.toLowerCase().contains("red")) { + reds.add(color); + } + } + assertThat(reds).containsExactly("red", "Light Red", "Orange-red wash", "ruby red"); } + + // + // Using the Collections utility class + // + @Test + public void sortingElementsInAList() { + List terms = List.of("red", "yellow", "orange", "green","ruby red", "blue"); + + List sortedTerms = new ArrayList<>(terms); + + Collections.sort(sortedTerms); + + assertThat(sortedTerms).containsExactly("blue", "green", "orange", "red", "ruby red", "yellow"); + + } + + @Test + public void replacingElements() { + List terms = List.of("red", "yellow", "orange", "green","ruby red", "blue"); + + List sortedTerms = new ArrayList<>(terms); + + Collections.replaceAll(sortedTerms,"yellow","beige"); + + assertThat(sortedTerms).containsExactly("red", "beige", "orange", "green","ruby red", "blue"); + + } + + + @Test + public void findingMaximumAndMinimums() { + List numbers = List.of(10,20,30,40,50); + + int max = Collections.max(numbers); + int min = Collections.min(numbers); + + assertThat(max).isEqualTo(50); + assertThat(min).isEqualTo(10); + + } + } From 0b0eaa2111b5c2cf50109e56c583ed45b3d9b015 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Tue, 2 Jun 2020 11:36:04 +0100 Subject: [PATCH 19/26] Sample code --- .../java/com/serenitydojo/strings/WhenWorkingWithStrings.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java b/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java index 65c18ed..3626fe1 100644 --- a/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java +++ b/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java @@ -152,5 +152,4 @@ public void findingMaximumAndMinimums() { assertThat(min).isEqualTo(10); } - } From 12582f113a5e241278c571621a9f3f9aa9b05a6b Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Tue, 16 Jun 2020 14:43:54 +0100 Subject: [PATCH 20/26] Sample code --- pom.xml | 4 ++-- src/test/java/com/serenitydojo/Record.java | 5 +++++ .../com/serenitydojo/WhenFilteringLists.java | 22 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/serenitydojo/Record.java create mode 100644 src/test/java/com/serenitydojo/WhenFilteringLists.java diff --git a/pom.xml b/pom.xml index a1c44be..39e3fd0 100644 --- a/pom.xml +++ b/pom.xml @@ -80,8 +80,8 @@ org.apache.maven.plugins maven-compiler-plugin - 10 - 10 + 15 + 15 diff --git a/src/test/java/com/serenitydojo/Record.java b/src/test/java/com/serenitydojo/Record.java new file mode 100644 index 0000000..94511b5 --- /dev/null +++ b/src/test/java/com/serenitydojo/Record.java @@ -0,0 +1,5 @@ +package com.serenitydojo; + +import java.util.List; + +record Order(String id, String name, int quanity, double itemPrice, double totalPrice, Listtags) {} diff --git a/src/test/java/com/serenitydojo/WhenFilteringLists.java b/src/test/java/com/serenitydojo/WhenFilteringLists.java new file mode 100644 index 0000000..e19f670 --- /dev/null +++ b/src/test/java/com/serenitydojo/WhenFilteringLists.java @@ -0,0 +1,22 @@ +package com.serenitydojo; + +import org.junit.Test; + +import java.util.Collections; +import java.util.List; + +public class WhenFilteringLists { + + + @Test + public void whenSortingByID() { + List orders = List.of( + new Order("1","bread",1,0.75, 0.75, Collections.emptyList()), + new Order("2","milk",2,1.75, 3.50, Collections.emptyList()), + new Order("3","cheese",5,5.00, 25, Collections.emptyList()) + ); + + System.out.println(orders); + } + // Filter by size +} From a3f706d5978d9c533124d1a066fd26271161c997 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Tue, 30 Jun 2020 17:47:34 +0100 Subject: [PATCH 21/26] Sample code --- pom.xml | 15 +- .../exceptions/StringProcessor.java | 26 +++ .../TestEnvironmentUnavailableException.java | 5 + src/test/java/com/serenitydojo/Record.java | 5 - .../com/serenitydojo/WhenCreatingObjects.java | 79 --------- .../serenitydojo/WhenFeedingTheAnimals.java | 67 -------- .../com/serenitydojo/WhenFilteringLists.java | 22 --- .../exceptions/WhenWorkingWithExceptions.java | 37 +++++ src/test/java/com/serenitydojo/readme.md | 1 - .../strings/WhenWorkingWithStrings.java | 155 ------------------ 10 files changed, 81 insertions(+), 331 deletions(-) create mode 100644 src/main/java/com/serenitydojo/exceptions/StringProcessor.java create mode 100644 src/main/java/com/serenitydojo/exceptions/TestEnvironmentUnavailableException.java delete mode 100644 src/test/java/com/serenitydojo/Record.java delete mode 100644 src/test/java/com/serenitydojo/WhenCreatingObjects.java delete mode 100644 src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java delete mode 100644 src/test/java/com/serenitydojo/WhenFilteringLists.java create mode 100644 src/test/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java delete mode 100644 src/test/java/com/serenitydojo/readme.md delete mode 100644 src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java diff --git a/pom.xml b/pom.xml index 39e3fd0..acbb56a 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,16 @@ 4.13 test + + net.serenity-bdd + serenity-core + 2.2.9 + + + net.serenity-bdd + serenity-junit + 2.2.9 + org.assertj assertj-core @@ -80,8 +90,9 @@ org.apache.maven.plugins maven-compiler-plugin - 15 - 15 + 14 + 14 + --enable-preview diff --git a/src/main/java/com/serenitydojo/exceptions/StringProcessor.java b/src/main/java/com/serenitydojo/exceptions/StringProcessor.java new file mode 100644 index 0000000..13e702a --- /dev/null +++ b/src/main/java/com/serenitydojo/exceptions/StringProcessor.java @@ -0,0 +1,26 @@ +package com.serenitydojo.exceptions; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class StringProcessor { + + public String showLengthOf(String input) { + int length = (input == null) ? 0 : input.length(); + return input + " has a length of " + length; + } + + + public int getPortOf(String urlAsAString) { + try { + URL url = new URL(urlAsAString); + return url.getDefaultPort(); + } catch(MalformedURLException badlyWrittenException) { + throw new TestEnvironmentUnavailableException(); + } + } +} diff --git a/src/main/java/com/serenitydojo/exceptions/TestEnvironmentUnavailableException.java b/src/main/java/com/serenitydojo/exceptions/TestEnvironmentUnavailableException.java new file mode 100644 index 0000000..567710c --- /dev/null +++ b/src/main/java/com/serenitydojo/exceptions/TestEnvironmentUnavailableException.java @@ -0,0 +1,5 @@ +package com.serenitydojo.exceptions; + +public class TestEnvironmentUnavailableException extends RuntimeException { + +} diff --git a/src/test/java/com/serenitydojo/Record.java b/src/test/java/com/serenitydojo/Record.java deleted file mode 100644 index 94511b5..0000000 --- a/src/test/java/com/serenitydojo/Record.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.serenitydojo; - -import java.util.List; - -record Order(String id, String name, int quanity, double itemPrice, double totalPrice, Listtags) {} diff --git a/src/test/java/com/serenitydojo/WhenCreatingObjects.java b/src/test/java/com/serenitydojo/WhenCreatingObjects.java deleted file mode 100644 index e3c2076..0000000 --- a/src/test/java/com/serenitydojo/WhenCreatingObjects.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.serenitydojo; - -import org.junit.Assert; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class WhenCreatingObjects { - - @Test - public void creating_a_cat() { - - Cat felix = new Cat("Felix","Tuna", 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); - assertEquals(fido.getName(), "Fido"); - assertEquals(fido.getFavoriteToy(), "Bone"); - assertEquals(fido.getAge(), 5); - - } - - @Test - public void creating_a_hampster() { - - Hampster rusty = new Hampster("Rusty","Wheel",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); - - 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"); - - } - -} diff --git a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java b/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java deleted file mode 100644 index 815e090..0000000 --- a/src/test/java/com/serenitydojo/WhenFeedingTheAnimals.java +++ /dev/null @@ -1,67 +0,0 @@ -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.*; - -public class WhenFeedingTheAnimals { - - @Test - public void shouldFeedCatsTuna() { - Feeder feeder = new Feeder(); - - FoodType food = feeder.feeds(CAT, false); - - Assert.assertEquals(FoodType.TUNA, food); - } - - @Test - public void shouldFeedHamstersCabbage() { - Feeder feeder = new Feeder(); - - FoodType food = feeder.feeds(HAMSTER, false); - - Assert.assertEquals(FoodType.CABBAGE, food); - } - - @Test - public void shouldFeedDogsDogFood() { - Feeder feeder = new Feeder(); - - FoodType food = feeder.feeds(DOG, false); - - Assert.assertEquals(FoodType.DOG_FOOD, food); - } - - @Test - public void shouldFeedPremiumCatsPremiumFood() { - Feeder feeder = new Feeder(); - - FoodType food = feeder.feeds(CAT, true); - - Assert.assertEquals(FoodType.SALMON, food); - } - - @Test - public void shouldFeedPremiumDogsDeluxeDogFood() { - Feeder feeder = new Feeder(); - - FoodType food = feeder.feeds(DOG, true); - - Assert.assertEquals(FoodType.DELUXE_DOG_FOOD, food); - } - - @Test - public void shouldFeedPremiumHamstersLettuce() { - Feeder feeder = new Feeder(); - - FoodType food = feeder.feeds(HAMSTER, true); - - Assert.assertEquals(FoodType.LETTUCE, food); - } - -} diff --git a/src/test/java/com/serenitydojo/WhenFilteringLists.java b/src/test/java/com/serenitydojo/WhenFilteringLists.java deleted file mode 100644 index e19f670..0000000 --- a/src/test/java/com/serenitydojo/WhenFilteringLists.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.serenitydojo; - -import org.junit.Test; - -import java.util.Collections; -import java.util.List; - -public class WhenFilteringLists { - - - @Test - public void whenSortingByID() { - List orders = List.of( - new Order("1","bread",1,0.75, 0.75, Collections.emptyList()), - new Order("2","milk",2,1.75, 3.50, Collections.emptyList()), - new Order("3","cheese",5,5.00, 25, Collections.emptyList()) - ); - - System.out.println(orders); - } - // Filter by size -} diff --git a/src/test/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java b/src/test/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java new file mode 100644 index 0000000..1838b57 --- /dev/null +++ b/src/test/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java @@ -0,0 +1,37 @@ +package com.serenitydojo.exceptions; + +import org.assertj.core.api.Assertions; +import org.junit.Test; + +import java.net.MalformedURLException; + +import static org.assertj.core.api.Assertions.assertThat; + +public class WhenWorkingWithExceptions { + + @Test + public void shouldShowTheLengthOfAString() { + StringProcessor stringProcessor = new StringProcessor(); + + String result = stringProcessor.showLengthOf("some string"); + + assertThat(result).isEqualTo("some string has a length of 11"); + } + + @Test + public void shouldShowZeroForNullStrings() { + + StringProcessor stringProcessor = new StringProcessor(); + + String result = stringProcessor.showLengthOf(null); + + assertThat(result).isEqualTo("null has a length of 0"); + } + + @Test(expected = TestEnvironmentUnavailableException.class) + public void shouldFindThePort() { + StringProcessor stringProcessor = new StringProcessor(); + + stringProcessor.getPortOf("A:https://www.google.com"); + } +} diff --git a/src/test/java/com/serenitydojo/readme.md b/src/test/java/com/serenitydojo/readme.md deleted file mode 100644 index 44f08e7..0000000 --- a/src/test/java/com/serenitydojo/readme.md +++ /dev/null @@ -1 +0,0 @@ -Unit tests go here \ No newline at end of file diff --git a/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java b/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java deleted file mode 100644 index 3626fe1..0000000 --- a/src/test/java/com/serenitydojo/strings/WhenWorkingWithStrings.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.serenitydojo.strings; - -import org.assertj.core.api.Assertions; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - -public class WhenWorkingWithStrings { - /** - * Adding strings together - */ - @Test - public void addingStringsTogether() { - - var colorA = "red"; - var colorB = "green"; - var colorC = "blue"; - - // TODO: turn these values into a comma separated list - var result = colorA + "," + colorB + "," + colorC; - - assertThat(result).isEqualTo("red,green,blue"); - } - - /** - * Take two strings (e.g. Duck, Orange) and return them in reverse order, separated by spaces - */ - @Test - public void reverseAPairOfStrings() { - - var result = reverse("Duck", "Orange"); - assertThat(result).isEqualTo("Orange Duck"); - } - - @Test - public void reverseAListOfStrings() { - var result = reverseList("Duck", "Orange"); - assertThat(result).containsExactly("Orange","Duck"); - } - - private String reverse(String... values) { - StringBuilder reversedValue = new StringBuilder(); - for(int i = values.length - 1; i >= 0; i--) { - reversedValue.append(values[i]); - reversedValue.append(" "); - } - return reversedValue.toString().trim(); - } - - private List reverseList(String... values) { - List reversed = new ArrayList<>(); - for(int i = values.length - 1; i >= 0; i--) { - reversed.add(values[i]); - } - return reversed; - } - - /** - * Convert a list of words into capitalised form - */ - @Test - public void capitaliseWords() { - - var result = capitalise("RED", "green","BluE"); - assertThat(result).isEqualTo("Red Green Blue"); - } - - private String capitalise(String... words) { - StringBuffer result = new StringBuffer(); - for(var word : words) { - var upperCaseFirstLetter = word.substring(0,1).toUpperCase(); - var lowerCaseEnding = word.toLowerCase().substring(1); - var capitalisedWord = upperCaseFirstLetter + lowerCaseEnding; - result.append(capitalisedWord); - result.append(" "); - } - return result.toString().trim(); - } - - /** - * Replace all of the red shirts by orange shirts - */ - @Test - public void colourSwitch() { - List colouredShirts = List.of("red shirt", "light red shirt", "blue shirt", "green shirt"); - - List updatedShirts = new ArrayList<>(); - for(String shirt : colouredShirts) { - updatedShirts.add(shirt.replace("red", "orange")); - } - - assertThat(updatedShirts).containsExactly("orange shirt", "light orange shirt", "blue shirt", "green shirt"); - } - - /** - * Find all the string values that contain red (reguardless of case) - */ - @Test - public void colourFilter() { - List terms = List.of("red", "Light Red", "Orange-red wash", "green","ruby red", "blue"); - - List reds = new ArrayList<>(); - - for(String color : terms) { - if (color.toLowerCase().contains("red")) { - reds.add(color); - } - } - assertThat(reds).containsExactly("red", "Light Red", "Orange-red wash", "ruby red"); - } - - // - // Using the Collections utility class - // - @Test - public void sortingElementsInAList() { - List terms = List.of("red", "yellow", "orange", "green","ruby red", "blue"); - - List sortedTerms = new ArrayList<>(terms); - - Collections.sort(sortedTerms); - - assertThat(sortedTerms).containsExactly("blue", "green", "orange", "red", "ruby red", "yellow"); - - } - - @Test - public void replacingElements() { - List terms = List.of("red", "yellow", "orange", "green","ruby red", "blue"); - - List sortedTerms = new ArrayList<>(terms); - - Collections.replaceAll(sortedTerms,"yellow","beige"); - - assertThat(sortedTerms).containsExactly("red", "beige", "orange", "green","ruby red", "blue"); - - } - - - @Test - public void findingMaximumAndMinimums() { - List numbers = List.of(10,20,30,40,50); - - int max = Collections.max(numbers); - int min = Collections.min(numbers); - - assertThat(max).isEqualTo(50); - assertThat(min).isEqualTo(10); - - } -} From 3ba568324614a23891f09728545bf922709b400e Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Sun, 22 Nov 2020 10:03:17 +0000 Subject: [PATCH 22/26] Sample solutions --- .../serenitydojo/exceptions/FileLoader.java | 30 +++++++++++ .../MissingWelcomeFileException.java | 7 +++ src/main/resources/hello.txt | 1 + .../ExceptionHandlingExercises.java | 52 +++++++++++++++++++ .../exceptions/WhenWorkingWithExceptions.java | 7 +-- 5 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/serenitydojo/exceptions/FileLoader.java create mode 100644 src/main/java/com/serenitydojo/exceptions/MissingWelcomeFileException.java create mode 100644 src/main/resources/hello.txt create mode 100644 src/test/java/com/serenitydojo/exceptions/ExceptionHandlingExercises.java diff --git a/src/main/java/com/serenitydojo/exceptions/FileLoader.java b/src/main/java/com/serenitydojo/exceptions/FileLoader.java new file mode 100644 index 0000000..2b74339 --- /dev/null +++ b/src/main/java/com/serenitydojo/exceptions/FileLoader.java @@ -0,0 +1,30 @@ +package com.serenitydojo.exceptions; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; + +public class FileLoader { + public String readHelloWorld() throws IOException { + return Files.readString(Paths.get("src/main/resources/hello.txt")); + } + + public boolean fileContainsText(String filename, String expectedText) { + String path = "src/main/resources/" + filename; + try { + return (Files.readString(Paths.get(path)).contains(expectedText)); + } catch (IOException e) { + return false; + } + } + + public boolean fileHasText(String filename, String expectedText) { + String path = "src/main/resources/" + filename; + try { + return (Files.readString(Paths.get(path)).contains(expectedText)); + } catch (IOException e) { + throw new MissingWelcomeFileException("Missing welcome file: " + filename, e); + } + } +} diff --git a/src/main/java/com/serenitydojo/exceptions/MissingWelcomeFileException.java b/src/main/java/com/serenitydojo/exceptions/MissingWelcomeFileException.java new file mode 100644 index 0000000..883700b --- /dev/null +++ b/src/main/java/com/serenitydojo/exceptions/MissingWelcomeFileException.java @@ -0,0 +1,7 @@ +package com.serenitydojo.exceptions; + +public class MissingWelcomeFileException extends RuntimeException { + public MissingWelcomeFileException(String message, Throwable e) { + super(message, e); + } +} diff --git a/src/main/resources/hello.txt b/src/main/resources/hello.txt new file mode 100644 index 0000000..5e1c309 --- /dev/null +++ b/src/main/resources/hello.txt @@ -0,0 +1 @@ +Hello World \ No newline at end of file diff --git a/src/test/java/com/serenitydojo/exceptions/ExceptionHandlingExercises.java b/src/test/java/com/serenitydojo/exceptions/ExceptionHandlingExercises.java new file mode 100644 index 0000000..2a4f16c --- /dev/null +++ b/src/test/java/com/serenitydojo/exceptions/ExceptionHandlingExercises.java @@ -0,0 +1,52 @@ +package com.serenitydojo.exceptions; + +import org.junit.Test; + +import java.io.IOException; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ExceptionHandlingExercises { + + // - Handle a declared exception + // - Catch a declared exception and return a value + // - Catch a declared exception and throw a custom exception + // - Custom logic that throws a custom exception when no result is found + // - Using the Finally block to clean up + + /** + * Exercise 1 - Handling exceptions + * Uncomment the code in this test and make it work. + * You will need to modify the FileLoader class so that it correctly handles an IOException + */ + @Test + public void workingWithDeclaredExceptions() throws IOException { + FileLoader fileLoader = new FileLoader(); + assertThat(fileLoader.readHelloWorld()).isEqualTo("Hello World"); + } + + /** + * Exercise 2 - Catching exceptions + * + */ + @Test + public void catchingExceptions() { + FileLoader fileLoader = new FileLoader(); + assertThat(fileLoader.fileContainsText("hello.txt","Hello World")).isTrue(); + } + + @Test + public void catchingExceptionsWhenTheFileDoesNotExist() { + FileLoader fileLoader = new FileLoader(); + assertThat(fileLoader.fileContainsText("does-not-exist.txt","Hello World")).isFalse(); + } + + /** + * Exercise 3 - Throwing custom exceptions + */ + @Test(expected = MissingWelcomeFileException.class) + public void catchingCustomExceptionsWhenTheFileDoesNotExist() { + FileLoader fileLoader = new FileLoader(); + assertThat(fileLoader.fileHasText("does-not-exist.txt","Hello World")).isFalse(); + } +} diff --git a/src/test/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java b/src/test/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java index 1838b57..4395705 100644 --- a/src/test/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java +++ b/src/test/java/com/serenitydojo/exceptions/WhenWorkingWithExceptions.java @@ -1,10 +1,7 @@ package com.serenitydojo.exceptions; -import org.assertj.core.api.Assertions; import org.junit.Test; -import java.net.MalformedURLException; - import static org.assertj.core.api.Assertions.assertThat; public class WhenWorkingWithExceptions { @@ -30,8 +27,8 @@ public void shouldShowZeroForNullStrings() { @Test(expected = TestEnvironmentUnavailableException.class) public void shouldFindThePort() { - StringProcessor stringProcessor = new StringProcessor(); + StringProcessor stringProcessor = new StringProcessor(); - stringProcessor.getPortOf("A:https://www.google.com"); + stringProcessor.getPortOf("A:https://www.google.com"); } } From 82bab1d3308363e31044e888ee5a4c3890aec078 Mon Sep 17 00:00:00 2001 From: John Ferguson Smart Date: Sun, 22 Nov 2020 10:09:29 +0000 Subject: [PATCH 23/26] Starting point for the exercises --- .../serenitydojo/exceptions/FileLoader.java | 21 +++++-------------- .../ExceptionHandlingExercises.java | 5 ++++- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/serenitydojo/exceptions/FileLoader.java b/src/main/java/com/serenitydojo/exceptions/FileLoader.java index 2b74339..98f7b84 100644 --- a/src/main/java/com/serenitydojo/exceptions/FileLoader.java +++ b/src/main/java/com/serenitydojo/exceptions/FileLoader.java @@ -1,30 +1,19 @@ package com.serenitydojo.exceptions; import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.List; public class FileLoader { public String readHelloWorld() throws IOException { - return Files.readString(Paths.get("src/main/resources/hello.txt")); + return "";//Files.readString(Paths.get("src/main/resources/hello.txt")); } - public boolean fileContainsText(String filename, String expectedText) { + public Boolean fileContainsText(String filename, String expectedText) { String path = "src/main/resources/" + filename; - try { - return (Files.readString(Paths.get(path)).contains(expectedText)); - } catch (IOException e) { - return false; - } + return null;// (Files.readString(Paths.get(path)).contains(expectedText)); } - public boolean fileHasText(String filename, String expectedText) { + public Boolean fileHasText(String filename, String expectedText) { String path = "src/main/resources/" + filename; - try { - return (Files.readString(Paths.get(path)).contains(expectedText)); - } catch (IOException e) { - throw new MissingWelcomeFileException("Missing welcome file: " + filename, e); - } + return null;// (Files.readString(Paths.get(path)).contains(expectedText)); } } diff --git a/src/test/java/com/serenitydojo/exceptions/ExceptionHandlingExercises.java b/src/test/java/com/serenitydojo/exceptions/ExceptionHandlingExercises.java index 2a4f16c..8724a1f 100644 --- a/src/test/java/com/serenitydojo/exceptions/ExceptionHandlingExercises.java +++ b/src/test/java/com/serenitydojo/exceptions/ExceptionHandlingExercises.java @@ -27,7 +27,8 @@ public void workingWithDeclaredExceptions() throws IOException { /** * Exercise 2 - Catching exceptions - * + * Update the fileContainsText() method in the FileLoader class so that it returns false if the file + * does not contain the excepted text, or if the file does not exist. */ @Test public void catchingExceptions() { @@ -43,6 +44,8 @@ public void catchingExceptionsWhenTheFileDoesNotExist() { /** * Exercise 3 - Throwing custom exceptions + * Create a custom runtime exception called MissingWelcomeFileException, + * and update the fileHasText() method to throw this exception if no matching file is found. */ @Test(expected = MissingWelcomeFileException.class) public void catchingCustomExceptionsWhenTheFileDoesNotExist() { From 5813687723f6797b610874084c46ae454841991c Mon Sep 17 00:00:00 2001 From: Lloyd Blake Date: Sun, 15 Nov 2020 13:43:26 +0000 Subject: [PATCH 24/26] Added my project --- src/main/java/com/serenitydojo/HelloWorldWriter.java | 8 ++++++++ .../java/com/serenitydojo/HelloWorldWriterTest.java | 12 ++++++++++++ 2 files changed, 20 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..f026f83 --- /dev/null +++ b/src/main/java/com/serenitydojo/HelloWorldWriter.java @@ -0,0 +1,8 @@ +package com.serenitydojo; + +public class HelloWorldWriter { + + public void writeHelloWorld(){ + System.out.println("Hello World"); + } +} diff --git a/src/test/java/com/serenitydojo/HelloWorldWriterTest.java b/src/test/java/com/serenitydojo/HelloWorldWriterTest.java new file mode 100644 index 0000000..b9f0167 --- /dev/null +++ b/src/test/java/com/serenitydojo/HelloWorldWriterTest.java @@ -0,0 +1,12 @@ +package com.serenitydojo; + +import org.junit.Test; + +public class HelloWorldWriterTest { + @Test + public void shouldWriteHelloWorldToTheConsole(){ + HelloWorldWriter writer = new HelloWorldWriter(); + writer.writeHelloWorld(); + + } +} From 7b68a4ef88b84d6c5e1937deda9f6cb287204ec3 Mon Sep 17 00:00:00 2001 From: Lloyd Date: Mon, 7 Dec 2020 17:11:45 +0000 Subject: [PATCH 25/26] Create README.md --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..53a010b --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# This repro is part of the Serenity Mentoring Programme that I am going through. This programme is run by John Smart https://johnfergusonsmart.com/serenity-bdd-mentoring/. This programme aims to turn manual testers into world class automation engineers. Using Java, Serenity, BDD, Cucumber and Gerkin From d332cc0a3a836c24fed0703b069e01123bc35080 Mon Sep 17 00:00:00 2001 From: Lloyd Date: Sun, 13 Dec 2020 21:57:47 +0000 Subject: [PATCH 26/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 53a010b..4b18f79 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# This repro is part of the Serenity Mentoring Programme that I am going through. This programme is run by John Smart https://johnfergusonsmart.com/serenity-bdd-mentoring/. This programme aims to turn manual testers into world class automation engineers. Using Java, Serenity, BDD, Cucumber and Gerkin +# This repro is part of the Serenity Mentoring Programme that I am going through. This programme is run by John Smart https://johnfergusonsmart.com/serenity-bdd-mentoring/. His programme aims to turn manual testers into world class automation engineers. Using Java, Serenity, BDD, Cucumber and Gerkin