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);
+ }
+
+}