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
113
114
115
|
package com.vaadin.data;
import com.vaadin.shared.Registration;
import com.vaadin.ui.Label;
import org.junit.Before;
import org.junit.Test;
import java.util.Objects;
import static org.junit.Assert.*;
public class ReadOnlyHasValueTest {
private static final String SAY_SOMETHING = "Say something";
private static final String SAY_SOMETHING_ELSE = "Say something else";
private static final String NO_VALUE = "-no-value-";
private Label label;
private ReadOnlyHasValue<String> hasValue;
@Before
public void setup() {
label = new Label();
hasValue = new ReadOnlyHasValue<>(label::setCaption);
}
@Test
public void testBase() {
hasValue.setReadOnly(true);
hasValue.setRequiredIndicatorVisible(false);
Registration registration = hasValue.addValueChangeListener(e -> {
});
registration.remove();
hasValue.setValue(SAY_SOMETHING);
assertEquals(SAY_SOMETHING, hasValue.getValue());
assertEquals(SAY_SOMETHING, label.getCaption());
hasValue.setValue(SAY_SOMETHING_ELSE);
assertEquals(SAY_SOMETHING_ELSE, hasValue.getValue());
assertEquals(SAY_SOMETHING_ELSE, label.getCaption());
}
@Test(expected = IllegalArgumentException.class)
public void testRO() {
hasValue.setReadOnly(false);
}
@Test(expected = IllegalArgumentException.class)
public void testIndicator() {
hasValue.setRequiredIndicatorVisible(true);
}
@Test
public void testBind() {
Binder<Bean> beanBinder = new Binder<>(Bean.class);
Label label = new Label();
ReadOnlyHasValue<Long> intHasValue = new ReadOnlyHasValue<>(
i -> label.setValue(Objects.toString(i, "")));
beanBinder.forField(intHasValue).bind("v");
beanBinder.readBean(new Bean(42));
assertEquals("42", label.getValue());
assertEquals(42L, intHasValue.getValue().longValue());
Registration registration = intHasValue.addValueChangeListener(e -> {
assertEquals(42L, e.getOldValue().longValue());
assertSame(intHasValue, e.getSource());
assertSame(null, e.getComponent());
assertSame(null, e.getComponent());
assertFalse(e.isUserOriginated());
});
beanBinder.readBean(new Bean(1984));
assertEquals("1984", label.getValue());
assertEquals(1984L, intHasValue.getValue().longValue());
registration.remove();
beanBinder.readBean(null);
assertEquals("", label.getValue());
assertEquals(null, intHasValue.getValue());
}
@Test
public void testEmptyValue() {
Binder<Bean> beanBinder = new Binder<>(Bean.class);
Label label = new Label();
ReadOnlyHasValue<String> strHasValue = new ReadOnlyHasValue<>(
label::setValue, NO_VALUE);
beanBinder.forField(strHasValue)
.withConverter(Long::parseLong, (Long i) -> "" + i).bind("v");
beanBinder.readBean(new Bean(42));
assertEquals("42", label.getValue());
beanBinder.readBean(null);
assertEquals(NO_VALUE, label.getValue());
assertTrue(strHasValue.isEmpty());
}
public static class Bean {
public Bean(long v) {
this.v = v;
}
private long v;
public long getV() {
return v;
}
public void setV(long v) {
this.v = v;
}
}
}
|