From 07d7ec51e82f044fb711147eeebd5b7e5601a3fb Mon Sep 17 00:00:00 2001 From: nabyla <31042612+nabyla@users.noreply.github.com> Date: Sun, 10 Sep 2017 15:53:27 +0100 Subject: [PATCH] Functional Java PR (#2599) * Update pom.xml with functionalJava dependencies * Add functionalJava classes * update README.md * remove unnecessary functionalJava dependencies * add FunctionalJava Tests * Delete FunctionalJavaMain.java * Fix Package Name --- libraries/pom.xml | 15 ---- .../com/baeldung/fj/FunctionalJavaTest.java | 79 +++++++++++++++++++ 2 files changed, 79 insertions(+), 15 deletions(-) create mode 100644 libraries/src/test/java/com/baeldung/fj/FunctionalJavaTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 8a4ccdf5b5..3cca9aef4c 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -564,21 +564,6 @@ functionaljava 4.7 - - org.functionaljava - functionaljava-java8 - 4.7 - - - org.functionaljava - functionaljava-quickcheck - 4.7 - - - org.functionaljava - functionaljava-java-core - 4.7 - javax.cache cache-api diff --git a/libraries/src/test/java/com/baeldung/fj/FunctionalJavaTest.java b/libraries/src/test/java/com/baeldung/fj/FunctionalJavaTest.java new file mode 100644 index 0000000000..04ab6e43be --- /dev/null +++ b/libraries/src/test/java/com/baeldung/fj/FunctionalJavaTest.java @@ -0,0 +1,79 @@ +package com.baeldung.fj; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import fj.F; +import fj.data.Array; +import fj.data.List; +import fj.data.Option; +import fj.function.Characters; +import fj.function.Integers; + +public class FunctionalJavaTest { + + public static final F isEven = i -> i % 2 == 0; + + @Test + public void calculateEvenNumbers_givenIntList_returnTrue() { + List fList = List.list(3, 4, 5, 6); + List evenList = fList.map(isEven); + List evenListTrueResult = List.list(false, true, false, true); + List evenListFalseResult = List.list(true, false, false, true); + assertEquals(evenList.equals(evenListTrueResult), true); + assertEquals(evenList.equals(evenListFalseResult), false); + } + + @Test + public void mapList_givenIntList_returnResult() { + List fList = List.list(3, 4, 5, 6); + fList = fList.map(i -> i + 100); + List resultList = List.list(103, 104, 105, 106); + List falseResultList = List.list(15, 504, 105, 106); + assertEquals(fList.equals(resultList), true); + assertEquals(fList.equals(falseResultList), false); + } + + @Test + public void filterList_givenIntList_returnResult() { + Array array = Array.array(3, 4, 5, 6); + Array filteredArray = array.filter(Integers.even); + Array result = Array.array(4, 6); + Array wrongResult = Array.array(3, 5); + assertEquals(filteredArray.equals(result), true); + assertEquals(filteredArray.equals(wrongResult), false); + } + + @Test + public void checkForLowerCase_givenStringArray_returnResult() { + Array array = Array.array("Welcome", "To", "baeldung"); + Array array2 = Array.array("Welcome", "To", "Baeldung"); + Boolean isExist = array.exists(s -> List.fromString(s).forall(Characters.isLowerCase)); + Boolean isExist2 = array2.exists(s -> List.fromString(s).forall(Characters.isLowerCase)); + assertEquals(isExist, true); + assertEquals(isExist2, false); + } + + @Test + public void checkOptions_givenOptions_returnResult() { + Option n1 = Option.some(1); + Option n2 = Option.some(2); + + F> f1 = i -> i % 2 == 0 ? Option.some(i + 100) : Option.none(); + + Option result1 = n1.bind(f1); + Option result2 = n2.bind(f1); + + assertEquals(result1, Option.none()); + assertEquals(result2, Option.some(102)); + } + + @Test + public void foldLeft_givenArray_returnResult() { + Array intArray = Array.array(17, 44, 67, 2, 22, 80, 1, 27); + int sum = intArray.foldLeft(Integers.add, 0); + assertEquals(sum, 260); + } + +}