diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..ca349d52 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.idea +*.iml +.classpath +.project +.settings +/target +/bin \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 65514ae9..00000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Workshop Java 8 - -Thèmes abordées : - -* Méthode par défaut (01-default-method) \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..b20359bb --- /dev/null +++ b/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + devinstitut + java-java17 + 1.0-SNAPSHOT + + + utf-8 + + + + + + + maven-compiler-plugin + + 1.17 + 1.17 + + + + + + + + + junit + junit + 4.12 + + + org.hamcrest + hamcrest-library + 1.3 + + + + \ No newline at end of file diff --git a/src/test/java/java17/data/Account.java b/src/test/java/java17/data/Account.java new file mode 100644 index 00000000..6b770795 --- /dev/null +++ b/src/test/java/java17/data/Account.java @@ -0,0 +1,23 @@ +package java17.data; + +public class Account { + + private Person owner; + private Integer balance; + + public Person getOwner() { + return owner; + } + + public void setOwner(Person owner) { + this.owner = owner; + } + + public Integer getBalance() { + return balance; + } + + public void setBalance(Integer balance) { + this.balance = balance; + } +} diff --git a/src/test/java/java17/data/Data.java b/src/test/java/java17/data/Data.java new file mode 100644 index 00000000..64c25a2c --- /dev/null +++ b/src/test/java/java17/data/Data.java @@ -0,0 +1,15 @@ +package java17.data; + + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class Data { + + public static List buildPersonList(int nb) { + return IntStream.rangeClosed(1,nb) + .mapToObj(i -> new Person("first_" + i, "last_" + i, i, i % 9 == 0 ? "test": "password"+i)) + .collect(Collectors.toList()); + } +} diff --git a/src/test/java/java17/data/Person.java b/src/test/java/java17/data/Person.java new file mode 100644 index 00000000..2ddc7d8b --- /dev/null +++ b/src/test/java/java17/data/Person.java @@ -0,0 +1,51 @@ +package java17.data; + +public class Person { + + private String firstname; + private String lastname; + private Integer age; + private String password; + + public Person() { + } + + public Person(String firstname, String lastname, Integer age, String password) { + this.firstname = firstname; + this.lastname = lastname; + this.age = age; + this.password = password; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/test/java/java17/ex01/Method_01_Test.java b/src/test/java/java17/ex01/Method_01_Test.java new file mode 100644 index 00000000..0825e047 --- /dev/null +++ b/src/test/java/java17/ex01/Method_01_Test.java @@ -0,0 +1,87 @@ +package java17.ex01; + +import java.util.List; + +import org.junit.Test; + +import java17.data.Data; +import java17.data.Person; + + +/** + * Exercice 01 - Méthode par défaut + */ +public class Method_01_Test { + + // tag::IDao[] + interface IDao { + List findAll(); + + // TODO créer une méthode int sumAge() + int sumAge(); + // TODO Cette méthode retourne le résultat de l'addition des ages des personnes + } + // end::IDao[] + + class DaoA implements IDao { + + List people = Data.buildPersonList(20); + + @Override + public List findAll() { + return people; + } + + @Override + public int sumAge() { + int sum = 0; + for (Person p : people) { + sum += p.getAge(); + } + return sum; + } + } + + class DaoB implements IDao { + + List people = Data.buildPersonList(100); + + @Override + public List findAll() { + return people; + } + + @Override + public int sumAge() { + int sum = 0; + for (Person p : people) { + sum += p.getAge(); + } + return sum; + } + } + + @Test + public void test_daoA_sumAge() throws Exception { + + DaoA daoA = new DaoA(); + + // TODO invoquer la méthode sumAge pour que le test soit passant + int result = daoA.sumAge(); + + assert result == 210; + } + + @Test + public void test_daoB_sumAge() throws Exception { + + DaoB daoB = new DaoB(); + + // TODO invoquer la méthode sumAge pour que le test soit passant + int result = daoB.sumAge(); + + + assert result == 5050; + + } +} diff --git a/src/test/java/java17/ex02/Method_02_Test.java b/src/test/java/java17/ex02/Method_02_Test.java new file mode 100644 index 00000000..c4375d92 --- /dev/null +++ b/src/test/java/java17/ex02/Method_02_Test.java @@ -0,0 +1,53 @@ +package java17.ex02; + +import java.util.List; + +import org.junit.Test; + +import java17.data.Data; +import java17.data.Person; + +/** + * Exercice 02 - Redéfinition + */ +public class Method_02_Test { + + // tag::IDao[] + interface IDao { + List findAll(); + + // TODO créer une méthode String format() + // TODO la méthode retourne une chaîne de la forme [ persons] + // TODO exemple de résultat : "[14 persons]", "[30 persons]" + } + // end::IDao[] + + // tag::DaoA[] + class DaoA implements IDao { + + List people = Data.buildPersonList(20); + + @Override + public List findAll() { + return people; + } + + // TODO redéfinir la méthode String format() + // TODO la méthode retourne une chaîne de la forme DaoA[ persons] + // TODO exemple de résultat : "DaoA[14 persons]", "DaoA[30 persons]" + // TODO l'implémentation réutilise la méthode format() de l'interface + + } + // end::DaoA[] + + @Test + public void test_daoA_format() throws Exception { + + DaoA daoA = new DaoA(); + + // TODO invoquer la méthode format() pour que le test soit passant + String result = null; + + assert "DaoA[20 persons]".equals(result); + } +}