File tree Expand file tree Collapse file tree 5 files changed +75
-1
lines changed
main/java/Ch8_FunctionalProgramming/P168
test/java/Ch8_FunctionalProgramming Expand file tree Collapse file tree 5 files changed +75
-1
lines changed Original file line number Diff line number Diff line change 1+ 3.2
2+ 4.2
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 1- package Ch8_FunctionalProgramming ;
1+ package Ch8_FunctionalProgramming . P166 ;
22
33import Ch8_FunctionalProgramming .P166 .Filter ;
44import Ch8_FunctionalProgramming .P166 .HeavyMelonPredicate ;
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments