"...ontologiesforexperiments.git" did not exist on "6c67dd186482c01b6d6bff2474d9bc7eeae03857"
Newer
Older
package solutions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* This set of exercises is about lambdas and method references.
* You will write a lambda or method reference corresponding to
* each of several different functional interfaces. Each exercise
* is named after the functional interface intended to be used
* as the solution.
*/
public class A_LambdasAndMethodReferences {
@Test
public void a01predicate() {
// TODO: write a lambda expression that is a predicate
// that tests whether a string is longer than four characters.
//UNCOMMENT//Predicate<String> pred = null;
//BEGINREMOVE
Predicate<String> pred = s -> s.length() > 4;
//ENDREMOVE
assertTrue(pred.test("abcde"));
assertFalse(pred.test("abcd"));
}
@Test
public void a02predicate() {
// TODO: write a lambda expression that is a predicate
// that tests whether a string is empty
//UNCOMMENT//Predicate<String> pred = null;
//BEGINREMOVE
Predicate<String> pred = s -> s.isEmpty();
//ENDREMOVE
assertTrue(pred.test(""));
assertFalse(pred.test("a"));
}
@Test
public void a03predicate() {
// TODO: write a method reference that is a predicate
// that tests whether a string is empty
//UNCOMMENT//Predicate<String> pred = null;
//BEGINREMOVE
Predicate<String> pred = String::isEmpty;
//ENDREMOVE
assertTrue(pred.test(""));
assertFalse(pred.test("a"));
}
@Test
public void a04function() {
// TODO: write a lambda expression that wraps the given
// string in parentheses.
//UNCOMMENT//Function<String, String> func = null;
//BEGINREMOVE
Function<String, String> func = s -> "(" + s + ")";
//ENDREMOVE
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
assertEquals("(abc)", func.apply("abc"));
}
@Test
public void a05function() {
// TODO: write a lambda expression that converts the
// given string to upper case.
//UNCOMMENT//Function<String, String> func = null;
//BEGINREMOVE
Function<String, String> func = s -> s.toUpperCase();
//ENDREMOVE
assertEquals("ABC", func.apply("abc"));
}
@Test
public void a06function() {
// TODO: write a method reference that converts the
// given string to upper case.
//UNCOMMENT//Function<String, String> func = null;
//BEGINREMOVE
Function<String, String> func = String::toUpperCase;
//ENDREMOVE
assertEquals("ABC", func.apply("abc"));
}
@Test
public void a07consumer() {
// TODO: write a lambda expression that appends the
// string "abc" to the given StringBuilder.
//UNCOMMENT//Consumer<StringBuilder> cons = null;
//BEGINREMOVE
Consumer<StringBuilder> cons = sb -> sb.append("abc");
//ENDREMOVE
StringBuilder sb = new StringBuilder("xyz");
cons.accept(sb);
assertEquals("xyzabc", sb.toString());
}
@Test
public void a08consumer() {
// TODO: write a lambda expression that clears the given list.
//UNCOMMENT//Consumer<List<String>> cons = null;
//BEGINREMOVE
Consumer<List<String>> cons = list -> list.clear();
//ENDREMOVE
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
cons.accept(list);
assertTrue(list.isEmpty());
}
@Test
public void a09consumer() {
// TODO: write a method reference that clears the given list.
//UNCOMMENT//Consumer<List<String>> cons = null;
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
//BEGINREMOVE
Consumer<List<String>> cons = List::clear;
//ENDREMOVE
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
cons.accept(list);
assertTrue(list.isEmpty());
}
@Test
public void a10supplier() {
// TODO: write a lambda expression that returns a new StringBuilder
// containing the string "abc".
Supplier<StringBuilder> sup = () -> new StringBuilder("abc");
assertEquals("abc", sup.get().toString());
}
@Test
public void a11supplier() {
// TODO: write a lambda expression that returns a new, empty StringBuilder
//UNCOMMENT//Supplier<StringBuilder> sup = null;
//BEGINREMOVE
Supplier<StringBuilder> sup = () -> new StringBuilder();
//ENDREMOVE
assertEquals("", sup.get().toString());
}
@Test
public void a12supplier() {
// TODO: write a method reference that returns a new, empty StringBuilder
//UNCOMMENT//Supplier<StringBuilder> sup = null;
//BEGINREMOVE
Supplier<StringBuilder> sup = StringBuilder::new;
//ENDREMOVE
assertEquals("", sup.get().toString());
}
@Test
// TODO: write a lambda expression that, given two strings, returns the result
// of concatenating the first, followed by the second, followed by the
// first again.
//UNCOMMENT//BiFunction<String, String, String> bifunc = null;
//BEGINREMOVE
BiFunction<String, String, String> bifunc = (s1, s2) -> s1 + s2 + s1;
//ENDREMOVE
assertEquals("abcdefabc", bifunc.apply("abc", "def"));
}
@Test
public void a14bifunction() {
// TODO: write a lambda expression that returns the index of
// the first occurrence of the second string within the first string,
// or -1 if the second string doesn't occur within the first string.
//UNCOMMENT//BiFunction<String, String, Integer> bifunc = null;
//BEGINREMOVE
BiFunction<String, String, Integer> bifunc = (s1, s2) -> s1.indexOf(s2);
//ENDREMOVE
assertTrue(bifunc.apply("abcdefghi", "def") == 3);
assertTrue(bifunc.apply("abcdefghi", "xyz") == -1);
}
@Test
public void a15bifunction() {
// TODO: write a method reference that returns the index of
// the first occurrence of the second string within the first string,
// or -1 if the second string doesn't occur within the first string.
//UNCOMMENT//BiFunction<String, String, Integer> bifunc = null;
//BEGINREMOVE
BiFunction<String, String, Integer> bifunc = String::indexOf;
//ENDREMOVE
assertTrue(bifunc.apply("abcdefghi", "def") == 3);
assertTrue(bifunc.apply("abcdefghi", "xyz") == -1);
}
@Test
public void a16runnable() {
StringBuilder sb = new StringBuilder("abc");
String suffix = "xyz";
// TODO: write a lambda expression that appends the 'suffix'
// variable (a String) to the sb variable (a StringBuilder).
//UNCOMMENT//Runnable r = null;
//BEGINREMOVE
Runnable r = () -> sb.append(suffix);
r.run();
r.run();
r.run();
assertEquals("abcxyzxyzxyz", sb.toString());
}
}