From 18cfd080808d79a2668830686802f7c963d75a89 Mon Sep 17 00:00:00 2001 From: olyalee Date: Wed, 5 Jul 2017 18:49:32 +0300 Subject: [PATCH] homework part2 --- .../part2/exercise/ArrowNotationExercise.java | 29 ++++++++++++------- .../exercise/FunctionCombinationExercise.java | 28 +++++++----------- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/test/java/lambda/part2/exercise/ArrowNotationExercise.java b/src/test/java/lambda/part2/exercise/ArrowNotationExercise.java index c43edc4..cc3912c 100644 --- a/src/test/java/lambda/part2/exercise/ArrowNotationExercise.java +++ b/src/test/java/lambda/part2/exercise/ArrowNotationExercise.java @@ -3,6 +3,7 @@ import data.Person; import org.junit.Test; +import java.util.Comparator; import java.util.function.BiFunction; import java.util.function.BiPredicate; import java.util.function.Function; @@ -14,35 +15,43 @@ public class ArrowNotationExercise { @Test public void getAge() { // Person -> Integer - final Function getAge = null; // TODO + final Function getAge = person -> person.getAge(); // TODO - done assertEquals(Integer.valueOf(33), getAge.apply(new Person("", "", 33))); } @Test public void compareAges() { - // TODO use BiPredicate + // TODO use BiPredicate - done // compareAges: (Person, Person) -> boolean + BiPredicate compareAges = (x,y) -> x.getAge() == y.getAge(); - throw new UnsupportedOperationException("Not implemented"); - //assertEquals(true, compareAges.test(new Person("a", "b", 22), new Person("c", "d", 22))); + +// throw new UnsupportedOperationException("Not implemented"); + assertEquals(true, compareAges.test(new Person("a", "b", 22), new Person("c", "d", 22))); } - // TODO + // TODO - done // getFullName: Person -> String + private static String getFullName(Person p){ + return String.format("%s %s",p.getFirstName(),p.getLastName()); + } - // TODO + // TODO - done + //lambda BiFunction // ageOfPersonWithTheLongestFullName: (Person -> String) -> (Person, Person) -> int - // + private static BiFunction ageOfPersonWithTheLongestFullName(Function function) { + return (person, person2) -> function.apply(person).length()<=function.apply(person2).length() ? person2.getAge() : person.getAge(); + } @Test public void getAgeOfPersonWithTheLongestFullName() { // Person -> String - final Function getFullName = null; // TODO + final Function getFullName = ArrowNotationExercise::getFullName; // TODO - done // (Person, Person) -> Integer - // TODO use ageOfPersonWithTheLongestFullName(getFullName) - final BiFunction ageOfPersonWithTheLongestFullName = null; + // TODO use ageOfPersonWithTheLongestFullName(getFullName) - done + final BiFunction ageOfPersonWithTheLongestFullName = ageOfPersonWithTheLongestFullName(getFullName); assertEquals( Integer.valueOf(1), diff --git a/src/test/java/lambda/part2/exercise/FunctionCombinationExercise.java b/src/test/java/lambda/part2/exercise/FunctionCombinationExercise.java index ce7080f..caba9e3 100644 --- a/src/test/java/lambda/part2/exercise/FunctionCombinationExercise.java +++ b/src/test/java/lambda/part2/exercise/FunctionCombinationExercise.java @@ -21,20 +21,14 @@ public void personHasNotEmptyLastNameAndFirstName0() { // TODO // negate1: (Person -> boolean) -> (Person -> boolean) - private Predicate negate1(Predicate test) { - return p -> { - // TODO - throw new UnsupportedOperationException(); - }; + private Predicate negate1(Predicate t) { + return p -> !t.test(p); } // TODO // validateFirstNameAndLastName: (Person -> boolean, Person -> boolean) -> (Person -> boolean) private Predicate validateFirstNameAndLastName(Predicate t1, Predicate t2) { - return p -> { - // TODO - throw new UnsupportedOperationException(); - }; + return p -> t1.test(p) && t2.test(p); } @Test @@ -56,14 +50,14 @@ public void personHasNotEmptyLastNameAndFirstName1() { // negate: (T -> boolean) -> (T -> boolean) private Predicate negate(Predicate test) { // TODO - throw new UnsupportedOperationException(); + return t -> !test.test(t); } // TODO // and: (T -> boolean, T -> boolean) -> (T -> boolean) private Predicate and(Predicate t1, Predicate t2) { // TODO - throw new UnsupportedOperationException(); + return t -> t1.test(t) && t2.test(t); } @Test @@ -71,10 +65,10 @@ public void personHasNotEmptyLastNameAndFirstName2() { final Predicate hasEmptyFirstName = p -> p.getFirstName().isEmpty(); final Predicate hasEmptyLastName = p -> p.getLastName().isEmpty(); - final Predicate validateFirstName = null; // TODO use negate - final Predicate validateLastName = null; // TODO use negate + final Predicate validateFirstName = negate(hasEmptyFirstName); // TODO use negate + final Predicate validateLastName = negate(hasEmptyLastName); // TODO use negate - final Predicate validate = null; // TODO use and + final Predicate validate = and(validateFirstName,validateLastName); // TODO use and assertEquals(true, validate.test(new Person("a", "b", 0))); assertEquals(false, validate.test(new Person("", "b", 0))); @@ -86,10 +80,10 @@ public void personHasNotEmptyLastNameAndFirstName3() { final Predicate hasEmptyFirstName = p -> p.getFirstName().isEmpty(); final Predicate hasEmptyLastName = p -> p.getLastName().isEmpty(); - final Predicate validateFirstName = null; // TODO use Predicate::negate - final Predicate validateLastName = null; // TODO use Predicate::negate + final Predicate validateFirstName = hasEmptyFirstName.negate(); // TODO use Predicate::negate + final Predicate validateLastName = hasEmptyLastName.negate(); // TODO use Predicate::negate - final Predicate validate = null; // TODO use Predicate::and + final Predicate validate = validateFirstName.and(validateLastName); // TODO use Predicate::and assertEquals(true, validate.test(new Person("a", "b", 0))); assertEquals(false, validate.test(new Person("", "b", 0)));