source: josm/trunk/test/unit/org/openstreetmap/josm/actions/upload/FixDataHookTest.java @ 14134

Last change on this file since 14134 was 14134, checked in by Don-vip, 4 months ago

see #15229 - deprecate Main*.undoRedo - make UndoRedoHandler a singleton

  • Property svn:eol-style set to native
File size: 4.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions.upload;
3
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.assertFalse;
6import static org.junit.Assert.assertNotNull;
7import static org.junit.Assert.assertTrue;
8
9import java.util.Arrays;
10import java.util.Collection;
11
12import org.junit.Rule;
13import org.junit.Test;
14import org.openstreetmap.josm.command.PseudoCommand;
15import org.openstreetmap.josm.command.SequenceCommand;
16import org.openstreetmap.josm.data.APIDataSet;
17import org.openstreetmap.josm.data.UndoRedoHandler;
18import org.openstreetmap.josm.data.osm.DataSet;
19import org.openstreetmap.josm.data.osm.OsmPrimitive;
20import org.openstreetmap.josm.data.osm.Relation;
21import org.openstreetmap.josm.data.osm.Way;
22import org.openstreetmap.josm.testutils.JOSMTestRules;
23
24import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
25
26/**
27 * Unit tests for class {@link FixDataHook}.
28 */
29public class FixDataHookTest {
30
31    /**
32     * Setup test.
33     */
34    @Rule
35    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
36    public JOSMTestRules test = new JOSMTestRules().main();
37
38    /**
39     * Test of {@link FixDataHook#checkUpload} method.
40     */
41    @Test
42    public void testCheckUpload() {
43        // Empty data set
44        UndoRedoHandler.getInstance().commands.clear();
45        new FixDataHook().checkUpload(new APIDataSet());
46        assertTrue(UndoRedoHandler.getInstance().commands.isEmpty());
47
48        // Complete data set (except empty node which cannot be tested anymore)
49        Way emptyWay = new Way();
50        Relation emptyRelation = new Relation();
51        Way w1 = new Way();
52        w1.put("color", "test");
53        Way w2 = new Way();
54        w2.put("highway", "ford");
55        Way w3 = new Way();
56        w3.put("oneway", "false");
57        Way w4 = new Way();
58        w4.put("oneway", "0");
59        Way w5 = new Way();
60        w5.put("oneway", "true");
61        Way w6 = new Way();
62        w6.put("oneway", "1");
63        Way w7 = new Way();
64        w7.put("highway", "stile");
65        Relation r1 = new Relation();
66        r1.put("type", "multipolygon");
67        r1.put("boundary", "administrative");
68        Relation r2 = new Relation();
69        r2.put("foo", "space_end ");
70        r2.put("bar", " space_begin ");
71        r2.put("baz", " space_both ");
72        r2.put(" space_begin", "test");
73        r2.put("space_end ", "test");
74        r2.put(" space_both ", "test");
75        APIDataSet ads = new APIDataSet();
76        ads.init(new DataSet(emptyWay, emptyRelation, w1, w2, w3, w4, w5, w6, w7, r1, r2));
77
78        UndoRedoHandler.getInstance().commands.clear();
79        new FixDataHook().checkUpload(ads);
80        assertEquals(1, UndoRedoHandler.getInstance().commands.size());
81
82        SequenceCommand seq = (SequenceCommand) UndoRedoHandler.getInstance().commands.iterator().next();
83        Collection<? extends OsmPrimitive> prims = seq.getParticipatingPrimitives();
84        assertNotNull(prims);
85        assertEquals(9, prims.size());
86        for (OsmPrimitive o : Arrays.asList(w1, w2, w3, w4, w5, w6, w7, r1, r2)) {
87            assertTrue(o.toString(), prims.contains(o));
88        }
89        Collection<PseudoCommand> cmds = seq.getChildren();
90        assertNotNull(cmds);
91        assertEquals(9, cmds.size());
92
93        assertTrue(seq.executeCommand());
94
95        assertFalse(w1.hasKey("color"));
96        assertTrue(w1.hasKey("colour"));
97
98        assertFalse(w2.hasKey("highway"));
99        assertTrue(w2.hasKey("ford"));
100
101        assertFalse("false".equals(w3.get("oneway")));
102        assertTrue("no".equals(w3.get("oneway")));
103
104        assertFalse("0".equals(w4.get("oneway")));
105        assertTrue("no".equals(w4.get("oneway")));
106
107        assertFalse("true".equals(w5.get("oneway")));
108        assertTrue("yes".equals(w5.get("oneway")));
109
110        assertFalse("1".equals(w6.get("oneway")));
111        assertTrue("yes".equals(w6.get("oneway")));
112
113        assertFalse(w7.hasKey("highway"));
114        assertTrue(w7.hasKey("barrier"));
115
116        assertFalse("multipolygon".equals(r1.get("type")));
117        assertTrue("boundary".equals(r1.get("type")));
118
119        assertTrue("space_end".equals(r2.get("foo")));
120        assertTrue("space_begin".equals(r2.get("bar")));
121        assertTrue("space_both".equals(r2.get("baz")));
122        assertFalse(r2.hasKey(" space_begin"));
123        assertFalse(r2.hasKey("space_end "));
124        assertFalse(r2.hasKey(" space_both "));
125        assertTrue(r2.hasKey("space_begin"));
126        assertTrue(r2.hasKey("space_end"));
127        assertTrue(r2.hasKey("space_both"));
128    }
129}
Note: See TracBrowser for help on using the repository browser.