1
+ package com .baeldung .scala
2
+
3
+ import org .junit .Test
4
+ import org .junit .Assert ._
5
+ import HigherOrderFunctions ._
6
+
7
+ class HigherOrderFunctionsUnitTest {
8
+
9
+ @ Test
10
+ def whenCalledWithSumAndSquareFunctions_thenCorrectValueReturned = {
11
+ def square (x : Int ) = x * x
12
+
13
+ def sum (x : Int , y : Int ) = x + y
14
+
15
+ def sumSquares (a : Int , b : Int ) =
16
+ mapReduce(sum, 0 , square, a, b)
17
+
18
+ val n = 10
19
+ val expected = n * (n + 1 ) * (2 * n + 1 ) / 6
20
+ assertEquals(expected, sumSquares(1 , n));
21
+ }
22
+
23
+ @ Test
24
+ def whenComputingSumOfSquaresWithAnonymousFunctions_thenCorrectValueReturned = {
25
+ def sumSquares (a : Int , b : Int ) =
26
+ mapReduce((x, y) => x + y, 0 , x => x * x, a, b)
27
+
28
+ val n = 10
29
+ val expected = n * (n + 1 ) * (2 * n + 1 ) / 6
30
+ assertEquals(expected, sumSquares(1 , n));
31
+ }
32
+
33
+ @ Test
34
+ def givenCurriedFunctions_whenInvoked_thenCorrectValueReturned = {
35
+ def sum (f : Int => Int )(a : Int , b : Int ): Int =
36
+ if (a > b) 0 else f(a) + sum(f)(a + 1 , b)
37
+
38
+ def mod (n : Int )(x : Int ) = x % n
39
+
40
+ def sumMod5 = sum(mod(5 )) _
41
+
42
+ assertEquals(10 , sumMod5(6 ,10 ));
43
+ }
44
+ }
0 commit comments