1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.nuiton.decorator;
23
24 import org.junit.Assert;
25 import org.junit.Before;
26 import org.junit.Test;
27
28 import java.io.File;
29 import java.util.Locale;
30
31
32
33
34
35
36
37 public class DecoratorMulti18nProviderTest {
38
39 private static final String BY_NAME = "name";
40
41 private static final String BY_POS = "pos";
42
43 static protected Locale l_fr = Locale.FRANCE;
44
45 static protected Locale l_en = Locale.UK;
46
47 class MyDecoratorProvider extends DecoratorMulti18nProvider {
48
49 @Override
50 protected void loadDecorators(Locale locale) {
51
52 registerPropertyDecorator(locale, File.class, "name");
53 registerPropertyDecorator(locale, File.class, BY_NAME, "parent");
54
55 registerJXPathDecorator(locale, Class.class, "${simpleName}$s " + locale.getCountry());
56 registerJXPathDecorator(locale, Class.class, BY_NAME, "${name}$s " + locale.getCountry());
57
58 registerMultiJXPathDecorator(locale, Data.class, "${name}$s " + locale.getCountry(), "-", " ");
59 registerMultiJXPathDecorator(locale, Data.class, BY_POS, "${pos}$d " + locale.getCountry(), "-", " ");
60 }
61 }
62
63 MyDecoratorProvider provider;
64
65 @Before
66 public void beforeTest() throws Exception {
67 provider = new MyDecoratorProvider();
68 }
69
70 @Test
71 public void testGetDecoratorByObject() throws Exception {
72
73
74 File f = new File("myFile");
75 Data d = new Data(0, "name");
76 Class<?> k = File.class;
77
78 Decorator<File> fileDecorator = provider.getDecorator(l_fr, f);
79 Assert.assertNotNull(fileDecorator);
80 Assert.assertEquals(File.class, fileDecorator.getType());
81 Assert.assertEquals("myFile", fileDecorator.toString(f));
82
83 Decorator<?> classDecorator;
84
85 classDecorator = provider.getDecorator(l_fr, Class.class);
86 Assert.assertNotNull(classDecorator);
87 Assert.assertEquals(Class.class, classDecorator.getType());
88 Assert.assertEquals("File FR", classDecorator.toString(k));
89
90 classDecorator = provider.getDecorator(l_en, Class.class);
91 Assert.assertNotNull(classDecorator);
92 Assert.assertEquals(Class.class, classDecorator.getType());
93 Assert.assertEquals("File GB", classDecorator.toString(k));
94
95 Decorator<Data> dataDecorator;
96
97 dataDecorator = provider.getDecorator(l_fr, d);
98 Assert.assertNotNull(dataDecorator);
99 Assert.assertEquals(Data.class, dataDecorator.getType());
100 Assert.assertEquals("name FR", dataDecorator.toString(d));
101
102 dataDecorator = provider.getDecorator(l_en, d);
103 Assert.assertNotNull(dataDecorator);
104 Assert.assertEquals(Data.class, dataDecorator.getType());
105 Assert.assertEquals("name GB", dataDecorator.toString(d));
106 }
107
108 @Test
109 public void testGetDecoratorByObjectAndName() throws Exception {
110
111 File f = new File("myFile");
112 Data d = new Data(0, "name");
113 Class<?> k = File.class;
114
115 Decorator<File> fileDecorator = provider.getDecorator(l_fr, f, BY_NAME);
116 Assert.assertNotNull(fileDecorator);
117 Assert.assertEquals(File.class, fileDecorator.getType());
118 Assert.assertEquals("null", fileDecorator.toString(f));
119
120 Decorator<Class> classDecorator;
121
122 classDecorator = provider.getDecoratorByType(l_fr, Class.class, BY_NAME);
123 Assert.assertNotNull(classDecorator);
124 Assert.assertEquals(Class.class, classDecorator.getType());
125 Assert.assertEquals("java.io.File FR", classDecorator.toString(k));
126
127 classDecorator = provider.getDecoratorByType(l_en, Class.class, BY_NAME);
128 Assert.assertNotNull(classDecorator);
129 Assert.assertEquals(Class.class, classDecorator.getType());
130 Assert.assertEquals("java.io.File GB", classDecorator.toString(k));
131
132
133 Decorator<Data> dataDecorator;
134
135 dataDecorator = provider.getDecorator(l_fr, d, BY_NAME);
136 Assert.assertNull(dataDecorator);
137
138 dataDecorator = provider.getDecorator(l_en, d, BY_NAME);
139 Assert.assertNull(dataDecorator);
140
141 dataDecorator = provider.getDecorator(l_fr, d, BY_POS);
142 Assert.assertNotNull(dataDecorator);
143 Assert.assertEquals(Data.class, dataDecorator.getType());
144 Assert.assertEquals("0 FR", dataDecorator.toString(d));
145
146 dataDecorator = provider.getDecorator(l_en, d, BY_POS);
147 Assert.assertNotNull(dataDecorator);
148 Assert.assertEquals(Data.class, dataDecorator.getType());
149 Assert.assertEquals("0 GB", dataDecorator.toString(d));
150 }
151
152 @Test
153 public void testGetDecoratorByType() throws Exception {
154
155 File f = new File("myFile");
156 Data d = new Data(0, "name");
157 Class<?> k = File.class;
158
159 Decorator<File> fileDecorator = provider.getDecoratorByType(l_fr, File.class);
160 Assert.assertNotNull(fileDecorator);
161 Assert.assertEquals(File.class, fileDecorator.getType());
162 Assert.assertEquals("myFile", fileDecorator.toString(f));
163
164 Decorator<Class> classDecorator;
165
166 classDecorator = provider.getDecoratorByType(l_fr, Class.class);
167 Assert.assertNotNull(classDecorator);
168 Assert.assertEquals(Class.class, classDecorator.getType());
169 Assert.assertEquals("File FR", classDecorator.toString(k));
170
171 classDecorator = provider.getDecoratorByType(l_en, Class.class);
172 Assert.assertNotNull(classDecorator);
173 Assert.assertEquals(Class.class, classDecorator.getType());
174 Assert.assertEquals("File GB", classDecorator.toString(k));
175
176 Decorator<Data> dataDecorator;
177
178 dataDecorator = provider.getDecoratorByType(l_fr, Data.class);
179 Assert.assertNotNull(dataDecorator);
180 Assert.assertEquals(Data.class, dataDecorator.getType());
181 Assert.assertEquals("name FR", dataDecorator.toString(d));
182
183 dataDecorator = provider.getDecoratorByType(l_en, Data.class);
184 Assert.assertNotNull(dataDecorator);
185 Assert.assertEquals(Data.class, dataDecorator.getType());
186 Assert.assertEquals("name GB", dataDecorator.toString(d));
187 }
188
189 @Test
190 public void testGetDecoratorByTypeAndName() throws Exception {
191 File f = new File("myFile");
192 Data d = new Data(0, "name");
193 Class<?> k = File.class;
194
195 Decorator<File> fileDecorator = provider.getDecoratorByType(l_fr, File.class, BY_NAME);
196 Assert.assertNotNull(fileDecorator);
197 Assert.assertEquals(File.class, fileDecorator.getType());
198 Assert.assertEquals("null", fileDecorator.toString(f));
199
200 Decorator<Class> classDecorator;
201
202 classDecorator = provider.getDecoratorByType(l_fr, Class.class, BY_NAME);
203 Assert.assertNotNull(classDecorator);
204 Assert.assertEquals(Class.class, classDecorator.getType());
205 Assert.assertEquals("java.io.File FR", classDecorator.toString(k));
206
207 classDecorator = provider.getDecoratorByType(l_en, Class.class, BY_NAME);
208 Assert.assertNotNull(classDecorator);
209 Assert.assertEquals(Class.class, classDecorator.getType());
210 Assert.assertEquals("java.io.File GB", classDecorator.toString(k));
211
212 Decorator<Data> dataDecorator;
213
214 dataDecorator = provider.getDecoratorByType(l_fr, Data.class, BY_POS);
215 Assert.assertNotNull(dataDecorator);
216 Assert.assertEquals(Data.class, dataDecorator.getType());
217 Assert.assertEquals("0 FR", dataDecorator.toString(d));
218
219 dataDecorator = provider.getDecoratorByType(l_en, Data.class, BY_POS);
220 Assert.assertNotNull(dataDecorator);
221 Assert.assertEquals(Data.class, dataDecorator.getType());
222 Assert.assertEquals("0 GB", dataDecorator.toString(d));
223 }
224
225
226 }