Statistics
| Revision:

gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.lib / org.gvsig.vcsgis.lib.impl / src / test / java / org / gvsig / vcsgis / lib / impl / Test08Update.java @ 2823

History | View | Annotate | Download (21.8 KB)

1
package org.gvsig.vcsgis.lib.impl;
2

    
3
import java.io.File;
4
import java.util.List;
5
import junit.framework.TestCase;
6
import static junit.framework.TestCase.assertEquals;
7
import org.apache.commons.io.FileUtils;
8
import org.codehaus.plexus.util.StringUtils;
9
import org.gvsig.expressionevaluator.Expression;
10
import org.gvsig.fmap.dal.exception.DataException;
11
import org.gvsig.fmap.dal.feature.EditableFeature;
12
import org.gvsig.fmap.dal.feature.Feature;
13
import org.gvsig.fmap.dal.feature.FeatureStore;
14
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
15
import org.gvsig.tools.dispose.DisposeUtils;
16
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
17
import org.gvsig.vcsgis.lib.VCSGisEntity;
18
import org.gvsig.vcsgis.lib.VCSGisLocator;
19
import org.gvsig.vcsgis.lib.VCSGisManager;
20
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_NO_ERROR;
21
import org.gvsig.vcsgis.lib.repository.VCSGisRepository;
22
import org.gvsig.vcsgis.lib.repository.VCSGisRepositoryChange;
23
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
24
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceChanges;
25
import org.slf4j.Logger;
26
import org.slf4j.LoggerFactory;
27

    
28
public class Test08Update extends TestCase {
29

    
30
    private static final Logger LOGGER = LoggerFactory.getLogger(Test08Update.class);
31

    
32
    public Test08Update(String testName) {
33
        super(testName);
34
    }
35

    
36
    @Override
37
    protected void setUp() throws Exception {
38
        super.setUp();
39
        new DefaultLibrariesInitializer().fullInitialize();
40
    }
41

    
42
    @Override
43
    protected void tearDown() throws Exception {
44
        super.tearDown();
45
    }
46

    
47
    // TODO add test methods here. The name must begin with 'test'. For example:
48
    // public void testHello() {}
49

    
50
    public void testUpdate() throws Exception {
51
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
52
        JDBCServerExplorer server = TestUtils.openServerExplorer("srv-update");
53
        File ws1file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws1-update")); 
54
        File ws2file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws2-update")); 
55
        
56
        int r;
57
        Feature f;
58
        EditableFeature ef;
59
        List<Feature> features;
60
        FeatureStore store1;
61
        FeatureStore store2;
62
        
63
        // ------------------------------------------------------------
64
        // Inicializamos el repositorio y lo abrimos
65
        r = manager.initRepository(server.getParameters(), null);
66
        assertEquals("init_server status", ERR_NO_ERROR, r);
67
        
68
        VCSGisRepository repo = manager.openRepository(server.getParameters());
69
        TestUtils.h2sql_repository(repo);
70

    
71
        // ------------------------------------------------------------
72
        // Creamos workspace1 y lo abrimos.
73
        r = manager.initWorkspace(ws1file, repo, "Test update1",null);
74
        assertEquals("init_ws1 status", ERR_NO_ERROR, r);
75
        
76
        VCSGisWorkspace ws1 = manager.openWorkspace(ws1file);
77
        TestUtils.h2sql_workspace(ws1);
78

    
79
        // ------------------------------------------------------------
80
        // Adicionamos al workspace1 la tabla "test" y la commitamos.
81
        FeatureStore sourceTest = TestUtils.openSourceStore2();
82
        r = ws1.add("test", sourceTest, "text");
83
        assertEquals("ws1.add status", ERR_NO_ERROR, r);
84
        r = ws1.commit();
85
        assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r);
86
        DisposeUtils.disposeQuietly(sourceTest);
87

    
88
        
89
        // ------------------------------------------------------------
90
        // Inicializamos el workspace2 asociandolo al mismo repositorio que 
91
        // workspace1 y lo abrimos.
92
        r = manager.initWorkspace(ws2file, repo, "Test update2",null);
93
        assertEquals("init_ws2 status", ERR_NO_ERROR, r);
94
        VCSGisWorkspace ws2 = manager.openWorkspace(ws2file);
95
        TestUtils.h2sql_workspace(ws2);
96
        
97
        // ------------------------------------------------------------
98
        // Hacemos un checkout en workspace2 de la tabla "test" 
99
        // y comprobamos que tiene lo que toca.
100
        r = ws2.checkout("test");
101
        assertEquals("ws2-checkout status", ERR_NO_ERROR, r);
102
       
103
        VCSGisEntity entity = ws2.getWorkspaceEntityByName("test");
104
        assertNotNull("ws2.update-1 entity", entity);
105
        assertEquals("ws2.update-1 label", "text", entity.getFieldForLabel());
106

    
107
        store2 = ws2.getFeatureStore("test");
108
        assertEquals("ws2-checkout sizes", 3, store2.size64());
109
        features = store2.getFeatures((Expression)null, "id", true);
110
        assertEquals(1    , features.get(0).getInt("id"));
111
        assertEquals("AAA", features.get(0).getString("text"));
112
        assertEquals(2    , features.get(1).getInt("id"));
113
        assertEquals("BBB", features.get(1).getString("text"));
114
        assertEquals(3    , features.get(2).getInt("id"));
115
        assertEquals("CCC", features.get(2).getString("text"));
116
        
117
        DisposeUtils.disposeQuietly(store2);
118

    
119
        // ------------------------------------------------------------
120
        // Modificamos la tabla "test" en el workspace1 y la commitamos.
121
        store1 = ws1.getFeatureStore("test");
122
        store1.edit();
123
        f = store1.findFirst("id=2");
124
        ef = f.getEditable();
125
        ef.set("text", "BB2");
126
        store1.update(ef);
127
        
128
        ef = store1.createNewFeature();
129
        ef.set("id",4);
130
        ef.set("text","DDD");
131
        store1.insert(ef);
132
        store1.finishEditing();
133
        DisposeUtils.disposeQuietly(store1);
134
        r = ws1.commit();
135
        assertEquals("ws1.commit-2 status", ERR_NO_ERROR, r);
136
        
137
        // ------------------------------------------------------------
138
        // Actualizamos (update) la tabla "test" en el workspace2 
139
        // y comprobamos que tiene lo que toca.
140
        r = ws2.updatePrepare("test");
141
        assertEquals("ws2.update-prepare-1 status", 0, r);
142
        VCSGisWorkspaceChanges<VCSGisRepositoryChange> remoteChanges = ws2.getRemoteChanges();
143
        assertEquals("ws2.update-prepare-1 remoteChanges size", 2L, remoteChanges.size64());
144
        
145
        
146
        r = ws2.updatePrepare("test");
147
        assertEquals("ws2.updatePrepare-1 status", 0, r);
148
        r = ws2.update("test");
149
        assertEquals("ws2.update-1 status", 0, r);
150
        store2 = ws2.getFeatureStore("test");
151
        assertEquals("ws2-upfate sizes", 4, store2.size64());
152
        features = store2.getFeatures((Expression)null, "id", true);
153
        assertEquals(1    , features.get(0).getInt("id"));
154
        assertEquals("AAA", features.get(0).getString("text"));
155
        assertEquals(2    , features.get(1).getInt("id"));
156
        assertEquals("BB2", features.get(1).getString("text"));
157
        assertEquals(3    , features.get(2).getInt("id"));
158
        assertEquals("CCC", features.get(2).getString("text"));
159
        assertEquals(4    , features.get(3).getInt("id"));
160
        assertEquals("DDD", features.get(3).getString("text"));
161
        DisposeUtils.disposeQuietly(store2);
162

    
163
        // ------------------------------------------------------------
164
        // Volvemos a modificar la tabla "test" en el workspace1 y la commitamos.
165
        store1 = ws1.getFeatureStore("test");
166
        store1.edit();
167
        ef = store1.createNewFeature();
168
        ef.set("id",5);
169
        ef.set("text","EEE");
170
        store1.insert(ef);
171

    
172
        f = store1.findFirst("id=3");
173
        store1.delete(f);        
174
        store1.finishEditing();
175
        DisposeUtils.disposeQuietly(store1);
176
        r = ws1.commit();
177
        assertEquals("ws1.commit-3 status", ERR_NO_ERROR, r);
178
        
179
        
180
        // ------------------------------------------------------------
181
        // Volvemos a actualizar (update) la tabla "test" en el workspace2
182
        // y comprobamos que tiene lo que toca.
183
        r = ws2.updatePrepare("test");
184
        assertEquals("ws2.update-2 status", ERR_NO_ERROR, r);
185
        r = ws2.update("test");
186
        assertEquals("ws2.update-2 status", ERR_NO_ERROR, r);
187
        store2 = ws2.getFeatureStore("test");
188
        assertEquals("ws2-update sizes", 4, store2.size64());
189
        features = store2.getFeatures((Expression)null, "id", true);
190
        assertEquals(1    , features.get(0).getInt("id"));
191
        assertEquals("AAA", features.get(0).getString("text"));
192
        assertEquals(2    , features.get(1).getInt("id"));
193
        assertEquals("BB2", features.get(1).getString("text"));
194
        assertEquals(4    , features.get(2).getInt("id"));
195
        assertEquals("DDD", features.get(2).getString("text"));
196
        assertEquals(5    , features.get(3).getInt("id"));
197
        assertEquals("EEE", features.get(3).getString("text"));
198
        DisposeUtils.disposeQuietly(store2);
199

    
200
        // ------------------------------------------------------------
201
        // Volvemos a modificar la tabla "test" en el workspace1 y la commitamos.
202
        store1 = ws1.getFeatureStore("test");
203
        store1.edit();
204
        ef = store1.createNewFeature();
205
        ef.set("id",6);
206
        ef.set("text","FFF");
207
        store1.insert(ef);
208

    
209
        f = store1.findFirst("id=5");
210
        store1.delete(f);        
211
        store1.finishEditing();
212
        DisposeUtils.disposeQuietly(store1);
213
        r = ws1.commit();
214
        assertEquals("ws1.commit-4 status", ERR_NO_ERROR, r);
215

    
216
        
217
        // ------------------------------------------------------------
218
        // Volvemos a actualizar (update) la tabla "test" en el workspace2
219
        // y comprobamos que tiene lo que toca.
220
        r = ws2.updatePrepare("test");
221
        assertEquals("ws2.update-2 status", ERR_NO_ERROR, r);
222
        r = ws2.update("test");
223
        assertEquals("ws2.update-3 status", ERR_NO_ERROR, r);
224
        store2 = ws2.getFeatureStore("test");
225
        assertEquals("ws2-update sizes", 4, store2.size64());
226
        features = store2.getFeatures((Expression)null, "id", true);
227
        assertEquals(1    , features.get(0).getInt("id"));
228
        assertEquals("AAA", features.get(0).getString("text"));
229
        assertEquals(2    , features.get(1).getInt("id"));
230
        assertEquals("BB2", features.get(1).getString("text"));
231
        assertEquals(4    , features.get(2).getInt("id"));
232
        assertEquals("DDD", features.get(2).getString("text"));
233
        assertEquals(6    , features.get(3).getInt("id"));
234
        assertEquals("FFF", features.get(3).getString("text"));
235
        DisposeUtils.disposeQuietly(store2);
236

    
237
        // ------------------------------------------------------------
238
        // Volvemos a modificar la tabla "test" en el workspace1 y la commitamos.
239
        store1 = ws1.getFeatureStore("test");
240
        store1.edit();
241
        f = store1.findFirst("id=1");
242
        ef = f.getEditable();
243
        ef.set("text", "AA2");
244
        store1.update(ef);
245
        store1.finishEditing();
246
        DisposeUtils.disposeQuietly(store1);
247
        r = ws1.commit();
248
        assertEquals("ws1.commit-5 status", ERR_NO_ERROR, r);
249

    
250
        // ------------------------------------------------------------
251
        // Volvemos a actualizar (update) la tabla "test" en el workspace2
252
        // y comprobamos que tiene lo que toca.
253
        // Hemos generado varias revisiones, con modificaciones que incluyen
254
        // borrados y actualizaciones que afectan a varias de las revisiones, 
255
        // y comprobamos que al final se recuperan los datos del head correctamente.
256
        r = ws2.updatePrepare("test");
257
        assertEquals("ws2.update-2 status", ERR_NO_ERROR, r);
258
        r = ws2.update("test");
259
        assertEquals("ws2.update-4 status", ERR_NO_ERROR, r);
260
        store2 = ws2.getFeatureStore("test");
261
        assertEquals("ws2-update sizes", 4, store2.size64());
262
        features = store2.getFeatures((Expression)null, "id", true);
263
        assertEquals(1    , features.get(0).getInt("id"));
264
        assertEquals("AA2", features.get(0).getString("text"));
265
        assertEquals(2    , features.get(1).getInt("id"));
266
        assertEquals("BB2", features.get(1).getString("text"));
267
        assertEquals(4    , features.get(2).getInt("id"));
268
        assertEquals("DDD", features.get(2).getString("text"));
269
        assertEquals(6    , features.get(3).getInt("id"));
270
        assertEquals("FFF", features.get(3).getString("text"));
271
        DisposeUtils.disposeQuietly(store2);
272

    
273
        
274
    }
275

    
276

    
277
    private void insert(FeatureStore store, int id, String text) throws DataException{
278
        EditableFeature ef = store.createNewFeature();
279
        ef.set("id",id);
280
        ef.set("text",text);
281
        store.insert(ef);
282
    }
283
    
284
    private void update(FeatureStore store, int id, String text) throws DataException{
285
        Feature f = store.findFirst("id="+id);
286
        EditableFeature ef = f.getEditable();
287
        ef.set("text", text);
288
        store.update(ef);
289
    }
290
    
291
    private void delete(FeatureStore store, int id, String text) throws DataException{
292
        Feature f = store.findFirst("id="+id);
293
        store.delete(f);
294
    }
295
    
296
    private void check(List<Feature> features, int index, int id, String text){
297
        assertEquals(id    , features.get(index).getInt("id"));
298
        assertEquals(text, features.get(index).getString("text"));
299
    }
300

    
301
    private void check(FeatureStore store2, String relatedFeatureCode, int id, String text) throws Exception {
302
        Feature f = store2.findFirst("VCSGISCODE = '"+relatedFeatureCode+"'");
303
        assertEquals(id, f.getInt("id"));
304
        assertEquals(text, f.getString("text"));
305
    }
306

    
307
    public void testUpdate2() throws Exception {
308
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
309
        JDBCServerExplorer server = TestUtils.openServerExplorer("srv-update");
310
        File ws1file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws1-update")); 
311
        File ws2file = TestUtils.getFile(FileUtils.getFile("test-dbs","ws2-update")); 
312
        
313
        int r;
314
        Feature f;
315
        EditableFeature ef;
316
        List<Feature> features;
317
        FeatureStore store1;
318
        FeatureStore store2;
319
        
320
        // ------------------------------------------------------------
321
        // Inicializamos el repositorio y lo abrimos
322
        r = manager.initRepository(server.getParameters(), null);
323
        assertEquals("init_server status", ERR_NO_ERROR, r);
324
        
325
        VCSGisRepository repo = manager.openRepository(server.getParameters());
326
        TestUtils.h2sql_repository(repo);
327

    
328
        // ------------------------------------------------------------
329
        // Creamos workspace1 y lo abrimos.
330
        r = manager.initWorkspace(ws1file, repo, "Test update1",null);
331
        assertEquals("init_ws1 status", ERR_NO_ERROR, r);
332
        
333
        VCSGisWorkspace ws1 = manager.openWorkspace(ws1file);
334
        TestUtils.h2sql_workspace(ws1);
335

    
336
        // ------------------------------------------------------------
337
        // Adicionamos al workspace1 la tabla "test" y la commitamos.
338
        //REV 0
339
        FeatureStore sourceTest = TestUtils.openSourceStore2();
340
        r = ws1.add("test", sourceTest, "text");
341
        DisposeUtils.disposeQuietly(sourceTest);
342
        assertEquals("ws1.add status", ERR_NO_ERROR, r);
343

    
344
        store1 = ws1.getFeatureStore("test");
345
        store1.edit();
346
        insert(store1, 4, "DDD");
347
        insert(store1, 5, "EEE");
348
        
349
        store1.finishEditing();
350
        DisposeUtils.disposeQuietly(store1);
351
        
352
        r = ws1.commit();
353
        assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r);
354

    
355
        //REV 1
356
        store1 = ws1.getFeatureStore("test");
357
        store1.edit();
358
        insert(store1, 6, "FFF");
359
        insert(store1, 7, "GGG");
360
        insert(store1, 8, "HHH");
361
        insert(store1, 9, "III");
362
        insert(store1, 10, "JJJ");
363
        delete(store1, 5, "EEE");
364
        update(store1, 2, "BB2");
365
        update(store1, 4, "DD2");
366
        
367
        store1.finishEditing();
368
        DisposeUtils.disposeQuietly(store1);
369
        
370
        r = ws1.commit();
371
        assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r);
372

    
373
        //REV 2
374
        
375
        store1 = ws1.getFeatureStore("test");
376
        store1.edit();
377
        insert(store1, 11, "KKK");
378
        insert(store1, 12, "LLL");
379
        insert(store1, 13, "MMM");
380
        delete(store1, 4, "DD2");
381
        delete(store1, 7, "GGG");
382
        
383
        store1.finishEditing();
384
        DisposeUtils.disposeQuietly(store1);
385
        
386
        r = ws1.commit();
387
        assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r);
388
        
389

    
390
        // UPDATE TO REV 2
391
        
392
        // ------------------------------------------------------------
393
        // Inicializamos el workspace2 asociandolo al mismo repositorio que 
394
        // workspace1 y lo abrimos.
395
        r = manager.initWorkspace(ws2file, repo, "Test update2",null);
396
        assertEquals("init_ws2 status", ERR_NO_ERROR, r);
397
        VCSGisWorkspace ws2 = manager.openWorkspace(ws2file);
398
        TestUtils.h2sql_workspace(ws2);
399
        
400
        
401
        // ------------------------------------------------------------
402
        // Actualizamos (update) la tabla "test" en el workspace2 
403
        // y comprobamos que tiene lo que toca.
404
        r = ws2.updatePrepare("test");
405
        assertEquals("ws2.update-1 status", 0, r);
406
        
407
        VCSGisEntity entity = ws2.getWorkspaceEntityByName("test");
408
        assertNull("ws2.update-1 entity", entity);
409
        
410
        VCSGisWorkspaceChanges<VCSGisRepositoryChange> changes = ws2.getRemoteChanges();
411
        assertEquals("ws2.update-1 changesSize", 10, changes.size64());
412
        
413
        for (int i = 0; i < changes.size64(); i++) {
414
            VCSGisRepositoryChange change = changes.get64(i);
415
            assertNotNull("ws2.update-1 label", change.getLabel());
416
            assertTrue("ws2.update-1 label", StringUtils.isNotBlank(change.getLabel()));
417
            String code = change.getEntityCode();
418
        }
419

    
420
        r = ws2.update("test");
421
        assertEquals("ws2.update-1 status", 0, r);
422
        
423
        entity = ws2.getWorkspaceEntityByName("test");
424
        assertNotNull("ws2.update-1 entity", entity);
425
        assertEquals("ws2.update-1 fieldForLabel", "text", entity.getFieldForLabel());
426
        
427
        
428
        
429
        store2 = ws2.getFeatureStore("test");
430
        assertEquals("ws2-upfate sizes", 10, store2.size64());
431
        features = store2.getFeatures((Expression)null, "id", true);
432
        
433
        check(features, 0, 1, "AAA");
434
        check(features, 1, 2, "BB2");
435
        check(features, 2, 3, "CCC");
436
        check(features, 3, 6, "FFF");
437
        check(features, 4, 8, "HHH");
438
        check(features, 5, 9, "III");
439
        check(features, 6, 10, "JJJ");
440
        check(features, 7, 11, "KKK");
441
        check(features, 8, 12, "LLL");
442
        check(features, 9, 13, "MMM");
443
        
444
        DisposeUtils.disposeQuietly(features);
445
        DisposeUtils.disposeQuietly(store2);
446
        
447
        
448
        //REV 3
449
        
450
        store1 = ws1.getFeatureStore("test");
451
        store1.edit();
452
        
453
        insert(store1, 14, "NNN");
454
        insert(store1, 15, "OOO");
455
        insert(store1, 16, "PPP");
456
        insert(store1, 17, "QQQ");
457
        delete(store1, 3, "CCC");
458
        delete(store1, 10, "JJJ");
459
        update(store1, 13, "MM2");
460
        
461
        store1.finishEditing();
462
        DisposeUtils.disposeQuietly(store1);
463
        
464
        r = ws1.commit();
465
        assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r);
466
        
467
        //REV 4
468
        
469
        store1 = ws1.getFeatureStore("test");
470
        store1.edit();
471
        
472
        insert(store1, 18, "RRR");
473
        insert(store1, 19, "SSS");
474
        insert(store1, 20, "TTT");
475
        insert(store1, 21, "UUU");
476
        delete(store1, 9, "III");
477
        update(store1, 17, "QQ2");
478
        delete(store1, 16, "PPP");
479
        
480
        store1.finishEditing();
481
        DisposeUtils.disposeQuietly(store1);
482
        
483
        r = ws1.commit();
484
        assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r);
485

    
486
        //REV 5
487
        
488
        store1 = ws1.getFeatureStore("test");
489
        store1.edit();
490
        
491
        insert(store1, 22, "VVV");
492
        insert(store1, 23, "WWW");
493
        insert(store1, 24, "XXX");
494
        insert(store1, 25, "YYY");
495
        insert(store1, 26, "ZZZ");
496
        delete(store1, 13, "MM2");
497
        delete(store1, 19, "SSS");
498
        
499
        store1.finishEditing();
500
        DisposeUtils.disposeQuietly(store1);
501
        
502
        r = ws1.commit();
503
        assertEquals("ws1.commit-1 status", ERR_NO_ERROR, r);
504

    
505
        
506
        // UPDATE TO REV 5
507

    
508
        // ------------------------------------------------------------
509
        // Actualizamos (update) la tabla "test" en el workspace2 
510
        // y comprobamos que tiene lo que toca.
511
        r = ws2.updatePrepare("test");
512
        assertEquals("ws2.update-1 status", 0, r);
513
        changes = ws2.getRemoteChanges();
514
        for (int i = 0; i < changes.size64(); i++) {
515
            VCSGisRepositoryChange change = changes.get64(i);
516
            assertNotNull("ws2.update-1 label", change.getLabel());
517
            assertTrue("ws2.update-1 label", StringUtils.isNotBlank(change.getLabel()));
518
            String code = change.getEntityCode();
519
        }
520
        
521
        assertEquals("ws2.update-1 changesSize", 15, changes.size64());
522
        r = ws2.update("test");
523
        assertEquals("ws2.update-1 status", 0, r);
524
        store2 = ws2.getFeatureStore("test");
525
        assertEquals("ws2-upfate sizes", 17, store2.size64());
526
        features = store2.getFeatures((Expression)null, "id", true);
527
        
528
        int n=0;
529
        check(features, n++, 1, "AAA");
530
        check(features, n++, 2, "BB2");
531
        check(features, n++, 6, "FFF");
532
        check(features, n++, 8, "HHH");
533
        check(features, n++, 11, "KKK");
534
        check(features, n++, 12, "LLL");
535
        
536
        check(features, n++, 14, "NNN");
537
        check(features, n++, 15, "OOO");
538
        check(features, n++, 17, "QQ2");
539
        check(features, n++, 18, "RRR");
540
        check(features, n++, 20, "TTT");
541
        check(features, n++, 21, "UUU");
542
        check(features, n++, 22, "VVV");
543
        check(features, n++, 23, "WWW");
544
        check(features, n++, 24, "XXX");
545
        check(features, n++, 25, "YYY");
546
        check(features, n++, 26, "ZZZ");
547
        
548
        DisposeUtils.disposeQuietly(features);
549
        DisposeUtils.disposeQuietly(store2);
550

    
551

    
552
        
553
    }
554

    
555
    
556
}