1
2
3
4
5
6
7
8
9
10
11
12
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
74
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
|
package com.vaadin.tests.components.grid;
import static org.junit.Assert.assertEquals;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.vaadin.data.SelectionModel;
import com.vaadin.server.Extension;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.SelectionMode;
import com.vaadin.ui.components.grid.GridMultiSelect;
import com.vaadin.ui.components.grid.GridSingleSelect;
import com.vaadin.ui.components.grid.MultiSelectionModel;
import com.vaadin.ui.components.grid.MultiSelectionModelImpl;
import com.vaadin.ui.components.grid.NoSelectionModel;
import com.vaadin.ui.components.grid.SingleSelectionModel;
import com.vaadin.ui.components.grid.SingleSelectionModelImpl;
public class GridSelectionModeTest {
private Grid<String> grid;
@Before
public void setup() {
grid = new Grid<>();
grid.setItems("foo", "bar", "baz");
}
@Test
public void testSelectionModes() {
assertEquals(SingleSelectionModelImpl.class,
grid.getSelectionModel().getClass());
assertEquals(MultiSelectionModelImpl.class,
grid.setSelectionMode(SelectionMode.MULTI).getClass());
assertEquals(MultiSelectionModelImpl.class,
grid.getSelectionModel().getClass());
assertEquals(NoSelectionModel.class,
grid.setSelectionMode(SelectionMode.NONE).getClass());
assertEquals(NoSelectionModel.class,
grid.getSelectionModel().getClass());
assertEquals(SingleSelectionModelImpl.class,
grid.setSelectionMode(SelectionMode.SINGLE).getClass());
assertEquals(SingleSelectionModelImpl.class,
grid.getSelectionModel().getClass());
}
@Test(expected = NullPointerException.class)
public void testNullSelectionMode() {
grid.setSelectionMode(null);
}
@Test
public void testGridAsMultiSelectHasAllAPI() {
assertAllAPIAvailable(GridMultiSelect.class, MultiSelectionModel.class,
"asMultiSelect");
}
@Test
public void testGridAsSingleSelectHasAllAPI() {
assertAllAPIAvailable(GridSingleSelect.class,
SingleSelectionModel.class, "asSingleSelect");
}
@SuppressWarnings("rawtypes")
protected void assertAllAPIAvailable(Class<?> testedClass,
Class<? extends SelectionModel> selectionModelClass,
String... ignoredMethods) {
List<String> ignored = Arrays.asList(ignoredMethods);
List<Method> missing = new ArrayList<>();
Arrays.stream(selectionModelClass.getMethods()).filter(method -> {
if (ignored.contains(method.getName())) {
// Explicitly ignored method.
return false;
}
try {
// Skip methods from Extension interface
Extension.class.getMethod(method.getName(),
method.getParameterTypes());
return false;
} catch (Exception e) {
return true;
}
}).forEach(method ->
{
try {
testedClass.getMethod(method.getName(),
method.getParameterTypes());
} catch (Exception e) {
missing.add(method);
}
});
if (!missing.isEmpty()) {
Assert.fail("Methods "
+ missing.stream().map(Method::getName)
.collect(Collectors.joining(", "))
+ " not found in " + testedClass.getSimpleName());
}
}
}
|