Statistics
| Revision:

root / trunk / extensions / extNormalization / src-test / org / gvsig / normalization / operations / TestNormAlgorithm.java @ 22975

History | View | Annotate | Download (8.6 KB)

1 22677 jsanz
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2008 Prodevelop S.L  main development
26
 */
27
28
package org.gvsig.normalization.operations;
29
30
import java.io.File;
31
import java.io.FileReader;
32
import java.util.List;
33
34
import junit.framework.TestCase;
35
36
import org.apache.log4j.Logger;
37 22975 vsanjaime
import org.gvsig.patterns.normalization.Patternnormalization;
38
import org.gvsig.tools.storage.IStorage;
39
import org.gvsig.tools.storage.StorageXML;
40 22677 jsanz
41
public class TestNormAlgorithm extends TestCase {
42
43
        private static final Logger log = Logger.getLogger(TestNormAlgorithm.class);
44
45
        public void setUp() {
46
        }
47
48
        public void testSplitChain() {
49
50
                log.info("TestNormAlgorithm. Test splits strings");
51
52
                log.info("SubTest 1");
53
                String c1 = ";aaa,,bbb;;;ccc/ddd@eee##;";
54
55
                File f1 = new File(
56
                                "src-test/org/gvsig/normalization/operations/testdata/patSplitChain.xml");
57
                assertNotNull(f1);
58
59
                List<String> r1 = parser(f1, c1);
60
                assertNotNull(r1);
61
62
                assertEquals("", (String) r1.get(0));
63
                assertEquals("aaa", (String) r1.get(1));
64
                assertEquals("", (String) r1.get(2));
65
                assertEquals("bbb", (String) r1.get(3));
66
                assertEquals("", (String) r1.get(4));
67
                assertEquals("", (String) r1.get(5));
68
                assertEquals("ccc", (String) r1.get(6));
69
                assertEquals("ddd", (String) r1.get(7));
70
                assertEquals("eee", (String) r1.get(8));
71
                assertEquals("", (String) r1.get(9));
72
                assertEquals(";", (String) r1.get(10));
73
74
                log.info("SubTest 2.");
75
                String c2 = "aaa bbb ccc ddd,76 %";
76
77
                File f2 = new File(
78
                                "src-test/org/gvsig/normalization/operations/testdata/patSplitChain2.xml");
79
                assertNotNull(f2);
80
81
                List<String> r2 = parser(f2, c2);
82
                assertNotNull(r2);
83
84
                assertEquals("aaa", (String) r2.get(0));
85
                assertEquals("bbb", (String) r2.get(1));
86
                assertEquals("ccc", (String) r2.get(2));
87
                assertEquals("ddd", (String) r2.get(3));
88
                assertEquals("76", (String) r2.get(4));
89
                assertEquals("%", (String) r2.get(5));
90
91
                log.info("SubTest 3.");
92 22975 vsanjaime
                String c3 = "Av;Germanias;25;3;Moncada;Valencia";
93 22677 jsanz
94
                File f3 = new File(
95
                                "src-test/org/gvsig/normalization/operations/testdata/patSplitChain3.xml");
96
                assertNotNull(f3);
97
98
                List<String> r3 = parser(f3, c3);
99
                assertNotNull(r3);
100
101
                assertEquals("Av", (String) r3.get(0));
102
                assertEquals("Germanias", (String) r3.get(1));
103 22975 vsanjaime
                assertEquals(25, Integer.parseInt((String) r3.get(2)));
104
                assertEquals(3, Integer.parseInt((String) r3.get(3)));
105 22677 jsanz
                assertEquals("Moncada", (String) r3.get(4));
106
                assertEquals("Valencia", (String) r3.get(5));
107
108
                log.info("SubTest 4.");
109
                String c4 = "Av. Germanias      15  2   Moncada   Valencia    ";
110
111
                File f4 = new File(
112
                                "src-test/org/gvsig/normalization/operations/testdata/patSplitChain4.xml");
113
                assertNotNull(f4);
114
115
                List<String> r4 = parser(f4, c4);
116
                assertNotNull(r4);
117
118
                assertEquals("Av.", ((String) r4.get(0)).trim());
119
                assertEquals("Germanias", ((String) r4.get(1)).trim());
120
                assertEquals(15, Integer.parseInt(((String) r4.get(2)).trim()));
121
                assertEquals(2, Integer.parseInt(((String) r4.get(3)).trim()));
122
                assertEquals("Moncada", ((String) r4.get(4)).trim());
123
                assertEquals("Valencia", ((String) r4.get(5)).trim());
124
125
                log.info("SubTest 5.");
126
                String c5 = "Av;;Germanias;15;;2;Moncada;Valencia";
127
128
                File f5 = new File(
129
                                "src-test/org/gvsig/normalization/operations/testdata/patSplitChain5.xml");
130
                assertNotNull(f5);
131
132
                List<String> r5 = parser(f5, c5);
133
                assertNotNull(r5);
134
135
                assertEquals("Av", (String) r5.get(0));
136
                assertEquals("Germanias", (String) r5.get(1));
137
                assertEquals(15, Integer.parseInt((String) r5.get(2)));
138
                assertEquals(2, Integer.parseInt((String) r5.get(3)));
139
                assertEquals("Moncada", (String) r5.get(4));
140
                assertEquals("Valencia", (String) r5.get(5));
141
142
                log.info("SubTest 6.");
143
                String c6 = "Av. Germanias 15-2 Moncada (Valencia)";
144
145
                File f6 = new File(
146
                                "src-test/org/gvsig/normalization/operations/testdata/patSplitChain6.xml");
147
                assertNotNull(f6);
148
149
                List<String> r6 = parser(f6, c6);
150
                assertNotNull(r6);
151
152
                assertEquals("Av.", ((String) r6.get(0)).trim());
153
                assertEquals("Germanias", ((String) r6.get(1)).trim());
154
                assertEquals(15, Integer.parseInt(((String) r6.get(2)).trim()));
155
                assertEquals(2, Integer.parseInt(((String) r6.get(3)).trim()));
156
                assertEquals("Moncada", ((String) r6.get(4)).trim());
157
                assertEquals("Valencia", ((String) r6.get(5)).trim());
158
159
                log.info("SubTest 7.");
160
                String c7 = "Juana Aguirre;Piedras;No 623;Piso2;Dto.4;C1070AAM;Capital Federal;ARGENTINA";
161
162
                File f7 = new File(
163
                                "src-test/org/gvsig/normalization/operations/testdata/patSplitChain7.xml");
164
                assertNotNull(f7);
165
166
                List<String> r7 = parser(f7, c7);
167
                assertNotNull(r7);
168
169
                assertEquals("Juana Aguirre", ((String) r7.get(0)).trim());
170
                assertEquals("Piedras", ((String) r7.get(1)).trim());
171
                assertEquals("No 623", ((String) r7.get(2)).trim());
172
                assertEquals("Piso2", ((String) r7.get(3)).trim());
173
                assertEquals("Dto.4", ((String) r7.get(4)).trim());
174
                assertEquals("C1070AAM", ((String) r7.get(5)).trim());
175
                assertEquals("Capital Federal", ((String) r7.get(6)).trim());
176
                assertEquals("ARGENTINA", ((String) r7.get(7)).trim());
177
178
                log.info("SubTest 8.");
179
                String c8 = "5.548\t5478.254\t0.24578457\t256.21450045";
180
181
                File f8 = new File(
182
                                "src-test/org/gvsig/normalization/operations/testdata/patSplitChain8.xml");
183
                assertNotNull(f8);
184
185
                List<String> r8 = parser(f8, c8);
186
                assertNotNull(r8);
187
188
                assertEquals(5.548, Double.parseDouble(((String) r8.get(0)).trim()));
189
                assertEquals(5478.254, Double.parseDouble(((String) r8.get(1)).trim()));
190
                assertEquals(0.24578457, Double
191
                                .parseDouble(((String) r8.get(2)).trim()));
192
                assertEquals(256.21450045, Double.parseDouble(((String) r8.get(3))
193
                                .trim()));
194
195
                log.info("TestNormAlgorithm. Test finished");
196
        }
197
198
        public void testSplitFixed() {
199
200
                log.info("TestNormAlgorithm. Test tokens fixed");
201
202
                String chain = "esto;/es;;; una_prueba;  de un/   split de una cadena_de texto";
203
204
                int parts = 4;
205
                boolean join = true;
206
                String[] separators = { " " };
207
                List<String> result = NormAlgorithm.splitChainBySeparators(chain,
208
                                parts, separators, join);
209
                log.info("Cadena inicial: " + chain);
210
                for (int i = 0; i < result.size(); i++) {
211
                        log.info("Subcadena" + i + ": " + (String) result.get(i));
212
                }
213
                assertEquals("esto;/es;;;", result.get(0));
214
                assertEquals("una_prueba;", result.get(1));
215
                assertEquals("de", result.get(2));
216
                assertEquals("un/   split de una cadena_de texto", result.get(3));
217
218
                log.info("TestNormAlgorithm. Test tokens fixed finished");
219
220
        }
221 22975 vsanjaime
222 22677 jsanz
        public void testSplitSeparators() {
223 22975 vsanjaime
224 22677 jsanz
                log.info("TestNormAlgorithm. Test tokens with separators");
225 22975 vsanjaime
226 22677 jsanz
                String chain = "esto;/es;;; una_prueba;  de un/   split de una cadena_de texto";
227
228
                int parts = 4;
229
                boolean join = true;
230
                String[] separators = { " " };
231
                List<String> result = NormAlgorithm.splitChainBySeparators(chain,
232
                                parts, separators, join);
233
                System.out.println("Cadena inicial: " + chain);
234
                for (int i = 0; i < result.size(); i++) {
235
                        System.out.println("Subcadena" + i + ": " + (String) result.get(i));
236
                }
237
                assertEquals("esto;/es;;;", result.get(0));
238
                assertEquals("una_prueba;", result.get(1));
239
                assertEquals("de", result.get(2));
240
                assertEquals("un/   split de una cadena_de texto", result.get(3));
241
242
                log.info("TestNormAlgorithm. Test tokens with separators finished");
243 22975 vsanjaime
244 22677 jsanz
        }
245
246
        private List<String> parser(File f, String chain) {
247 22975 vsanjaime
                Patternnormalization pat = new Patternnormalization();
248
                IStorage storage = new StorageXML();
249
250 22677 jsanz
                try {
251 22975 vsanjaime
                        FileReader reader = new FileReader(f);
252
                        storage.load(reader);
253
                        pat.setstate(storage);
254
                } catch (Exception e) {
255 22677 jsanz
                        e.printStackTrace();
256
                }
257
                NormAlgorithm na = new NormAlgorithm(pat);
258
259
                List<String> result = na.splitChain(chain);
260
                return result;
261
262
        }
263
264
}