Skip to content

Commit f196a82

Browse files
committed
ExecuteAroundPattern
1 parent 6396440 commit f196a82

File tree

5 files changed

+75
-1
lines changed

5 files changed

+75
-1
lines changed

doubles.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
3.2
2+
4.2
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package Ch8_FunctionalProgramming.P168;
2+
3+
import java.io.IOException;
4+
import java.nio.charset.StandardCharsets;
5+
import java.nio.file.Path;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
import java.util.Scanner;
9+
10+
public class Doubles {
11+
12+
public double read(ScannerDoubleFunction scannerDoubleFunction) throws IOException {
13+
try(Scanner scanner = new Scanner(Path.of("doubles.txt"), StandardCharsets.UTF_8)){
14+
return scannerDoubleFunction.readDouble(scanner);
15+
}
16+
}
17+
18+
public double getFirst(Scanner scanner){
19+
if(scanner.hasNextDouble()){
20+
return scanner.nextDouble();
21+
}
22+
return Double.NaN;
23+
}
24+
25+
public double sumAll(Scanner scanner){
26+
double sum = 0.0d;
27+
while(scanner.hasNextDouble()){
28+
sum += scanner.nextDouble();
29+
}
30+
return sum;
31+
}
32+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package Ch8_FunctionalProgramming.P168;
2+
3+
import java.io.IOException;
4+
import java.util.Scanner;
5+
6+
@FunctionalInterface
7+
public interface ScannerDoubleFunction {
8+
9+
double readDouble(Scanner scanner) throws IOException;
10+
}

src/test/java/Ch8_FunctionalProgramming/FilterTest.java renamed to src/test/java/Ch8_FunctionalProgramming/P166/FilterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package Ch8_FunctionalProgramming;
1+
package Ch8_FunctionalProgramming.P166;
22

33
import Ch8_FunctionalProgramming.P166.Filter;
44
import Ch8_FunctionalProgramming.P166.HeavyMelonPredicate;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package Ch8_FunctionalProgramming.P168;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.junit.jupiter.api.extension.ExtendWith;
5+
import org.mockito.InjectMocks;
6+
import org.mockito.junit.jupiter.MockitoExtension;
7+
8+
import java.io.IOException;
9+
import java.util.Scanner;
10+
11+
import static org.junit.jupiter.api.Assertions.assertEquals;
12+
13+
@ExtendWith(MockitoExtension.class)
14+
public class ExecuteAroundPatternTest {
15+
16+
@InjectMocks
17+
Doubles doubles;
18+
19+
@Test
20+
void test_doublesGetFirst() throws IOException {
21+
double result = doubles.read((Scanner sc)-> doubles.getFirst(sc));
22+
assertEquals(3.2, result);
23+
}
24+
25+
@Test
26+
void test_doublesSumAll() throws IOException {
27+
double result = doubles.read((Scanner sc)-> doubles.sumAll(sc));
28+
assertEquals(7.4, result);
29+
}
30+
}

0 commit comments

Comments
 (0)