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
30
31
32
33
34 public class DecoratorProviderTest {
35
36 private static final String BY_NAME = "name";
37
38 class MyDecoratorProvider extends DecoratorProvider {
39
40 @Override
41 protected void loadDecorators() {
42
43 registerPropertyDecorator(File.class, "name");
44 registerPropertyDecorator(File.class, BY_NAME, "parent");
45
46 registerJXPathDecorator(Class.class, "${simpleName}$s");
47 registerJXPathDecorator(Class.class, BY_NAME, "${name}$s");
48
49 registerMultiJXPathDecorator(Data.class, "${name}$s", "-", " ");
50 registerMultiJXPathDecorator(Data.class, BY_NAME, "${pos}$d", "-", " ");
51 }
52 }
53
54 DecoratorProvider provider;
55
56 @Before
57 public void beforeTest() throws Exception {
58 provider = new MyDecoratorProvider();
59 }
60
61 @Test
62 public void testGetDecoratorByObject() throws Exception {
63
64 File f = new File("myFile");
65 Data d = new Data(0, "name");
66 Class<?> k = File.class;
67
68 Decorator<File> fileDecorator = provider.getDecorator(f);
69 Assert.assertNotNull(fileDecorator);
70 Assert.assertEquals(File.class, fileDecorator.getType());
71 Assert.assertEquals("myFile", fileDecorator.toString(f));
72
73 Decorator<?> classDecorator = provider.getDecorator(Class.class);
74 Assert.assertNotNull(classDecorator);
75 Assert.assertEquals(Class.class, classDecorator.getType());
76 Assert.assertEquals("File", classDecorator.toString(k));
77
78 Decorator<Data> dataDecorator = provider.getDecorator(d);
79 Assert.assertNotNull(dataDecorator);
80 Assert.assertEquals(Data.class, dataDecorator.getType());
81 Assert.assertEquals("name", dataDecorator.toString(d));
82 }
83
84 @Test
85 public void testGetDecoratorByObjectAndName() throws Exception {
86
87 File f = new File("myFile");
88 Data d = new Data(0, "name");
89 Class<?> k = File.class;
90
91 Decorator<File> fileDecorator = provider.getDecorator(f, BY_NAME);
92 Assert.assertNotNull(fileDecorator);
93 Assert.assertEquals(File.class, fileDecorator.getType());
94 Assert.assertEquals("null", fileDecorator.toString(f));
95
96 Decorator<Class> classDecorator = provider.getDecoratorByType(Class.class, BY_NAME);
97 Assert.assertNotNull(classDecorator);
98 Assert.assertEquals(Class.class, classDecorator.getType());
99 Assert.assertEquals("java.io.File", classDecorator.toString(k));
100
101
102 Decorator<Data> dataDecorator = provider.getDecorator(d, BY_NAME);
103 Assert.assertNotNull(dataDecorator);
104 Assert.assertEquals(Data.class, dataDecorator.getType());
105 Assert.assertEquals("0", dataDecorator.toString(d));
106 }
107
108 @Test
109 public void testGetDecoratorByType() 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.getDecoratorByType(File.class);
116 Assert.assertNotNull(fileDecorator);
117 Assert.assertEquals(File.class, fileDecorator.getType());
118 Assert.assertEquals("myFile", fileDecorator.toString(f));
119
120 Decorator<Class> classDecorator = provider.getDecoratorByType(Class.class);
121 Assert.assertNotNull(classDecorator);
122 Assert.assertEquals(Class.class, classDecorator.getType());
123 Assert.assertEquals("File", classDecorator.toString(k));
124
125 Decorator<Data> dataDecorator = provider.getDecoratorByType(Data.class);
126 Assert.assertNotNull(dataDecorator);
127 Assert.assertEquals(Data.class, dataDecorator.getType());
128 Assert.assertEquals("name", dataDecorator.toString(d));
129 }
130
131 @Test
132 public void testGetDecoratorByTypeAndName() throws Exception {
133 File f = new File("myFile");
134 Data d = new Data(0, "name");
135 Class<?> k = File.class;
136
137 Decorator<File> fileDecorator = provider.getDecoratorByType(File.class, BY_NAME);
138 Assert.assertNotNull(fileDecorator);
139 Assert.assertEquals(File.class, fileDecorator.getType());
140 Assert.assertEquals("null", fileDecorator.toString(f));
141
142 Decorator<Class> classDecorator = provider.getDecoratorByType(Class.class, BY_NAME);
143 Assert.assertNotNull(classDecorator);
144 Assert.assertEquals(Class.class, classDecorator.getType());
145 Assert.assertEquals("java.io.File", classDecorator.toString(k));
146
147
148 Decorator<Data> dataDecorator = provider.getDecoratorByType(Data.class, BY_NAME);
149 Assert.assertNotNull(dataDecorator);
150 Assert.assertEquals(Data.class, dataDecorator.getType());
151 Assert.assertEquals("0", dataDecorator.toString(d));
152 }
153
154
155 @Test
156 public void testReload() throws Exception {
157
158 int nb = provider.getDecorators().size();
159 Assert.assertTrue(nb > 0);
160
161 provider.reload();
162
163 Assert.assertEquals(nb, provider.getDecorators().size());
164 }
165
166 @Test
167 public void testClear() throws Exception {
168 provider.clear();
169
170 Assert.assertTrue(provider.getDecorators().isEmpty());
171 }
172
173 }