-
Notifications
You must be signed in to change notification settings - Fork 14
/
MultilingualStringTest.java
146 lines (124 loc) · 4.67 KB
/
MultilingualStringTest.java
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package cz.cvut.kbss.jopa.model;
import org.junit.jupiter.api.Test;
import java.util.Set;
import static org.hamcrest.CoreMatchers.hasItems;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
class MultilingualStringTest {
private static final String VALUE = "test";
private static final String LANGUAGE = "en";
@Test
void staticCreateMethodInitializesStringWithSpecifiedValueAndLanguage() {
final MultilingualString sut = MultilingualString.create(VALUE, LANGUAGE);
assertNotNull(sut);
assertEquals(VALUE, sut.get(LANGUAGE));
}
@Test
void setSetsValueInSpecifiedLanguage() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE, LANGUAGE);
assertEquals(VALUE, sut.get(LANGUAGE));
}
@Test
void setOverridesPreexistingValueForSpecifiedLanguage() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE, LANGUAGE);
final String newValue = "exam";
sut.set(newValue, LANGUAGE);
assertEquals(newValue, sut.get(LANGUAGE));
}
@Test
void setWithoutLanguageSetsSimpleLiteralValue() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE);
assertEquals(VALUE, sut.get(null));
}
@Test
void getWithNullLanguageReturnsSimpleLiteralValue() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE);
assertEquals(VALUE, sut.get(null));
}
@Test
void getWithNullLanguageReturnsAnyExistingLanguageTaggedValueWhenSimpleLiteralIsNotPresent() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE, LANGUAGE);
assertEquals(VALUE, sut.get(null));
}
@Test
void getWithoutArgumentReturnsSimpleLiteralValue() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE);
assertEquals(VALUE, sut.get());
}
@Test
void getWithoutArgumentReturnsAnyExistingLanguageTaggedValueWhenSimpleLiteralIsNotPresent() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE, LANGUAGE);
assertEquals(VALUE, sut.get());
}
@Test
void containsReturnsTrueForExistingLanguageValue() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE, LANGUAGE);
assertTrue(sut.contains(LANGUAGE));
assertFalse(sut.contains("cs"));
}
@Test
void containsReturnsTrueForNullArgumentWhenAtLeastOneLanguageTaggedValueExists() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE, LANGUAGE);
assertTrue(sut.contains(null));
}
@Test
void getLanguagesReturnsSetOfLanguagesPresentInInstance() {
final MultilingualString sut = new MultilingualString();
sut.set(VALUE, LANGUAGE);
sut.set("test");
final Set<String> result = sut.getLanguages();
assertEquals(2, result.size());
assertThat(result, hasItems(LANGUAGE, null));
}
@Test
void equalityWorksBasedOnTranslations() {
final MultilingualString one = MultilingualString.create(VALUE, LANGUAGE);
one.set(VALUE);
final MultilingualString two = MultilingualString.create(VALUE, LANGUAGE);
two.set(VALUE);
assertEquals(one, two);
assertEquals(one.hashCode(), two.hashCode());
assertEquals(one.getValue(), two.getValue());
}
@Test
void getReturnsNullWhenValueInSpecifiedLanguageIsNotAvailable() {
final MultilingualString sut = new MultilingualString();
assertNull(sut.get(LANGUAGE));
}
@Test
void getWithNullArgumentReturnsNullWhenNeitherSimpleLiteralNorTranslationsAreAvailable() {
final MultilingualString sut = new MultilingualString();
assertNull(sut.get());
}
@Test
void containsSimpleReturnsTrueForSimpleLiteral() {
final MultilingualString sut = MultilingualString.create(VALUE, LANGUAGE);
assertFalse(sut.containsSimple());
sut.set("test");
assertTrue(sut.containsSimple());
}
@Test
void isEmptyReturnsTrueForMissingTranslations() {
final MultilingualString sut = new MultilingualString();
assertTrue(sut.isEmpty());
sut.set("test");
assertFalse(sut.isEmpty());
}
@Test
void removeRemovesTranslationInSpecifiedLanguage() {
final MultilingualString sut = MultilingualString.create(VALUE, LANGUAGE);
assertTrue(sut.contains(LANGUAGE));
sut.remove(LANGUAGE);
assertFalse(sut.contains(LANGUAGE));
assertFalse(sut.getValue().containsKey(LANGUAGE));
}
}