Ticket #22504: 0001-Add-circularize-selected-ways-unit-test.patch

File 0001-Add-circularize-selected-ways-unit-test.patch, 11.0 KB (added by qeef, 3 years ago)
  • new file test/data/alignCircleBuildingsAfter.osm

    From f54075f5222e0222aa666e214d133dd28e21df1d Mon Sep 17 00:00:00 2001
    From: Jiri Vlasak <jiri.hubacek@gmail.com>
    Date: Wed, 16 Nov 2022 23:02:34 +0100
    Subject: [PATCH 1/3] Add circularize selected ways unit test
    
    ---
     test/data/alignCircleBuildingsAfter.osm       | 69 +++++++++++++++++++
     test/data/alignCircleBuildingsBefore.osm      | 69 +++++++++++++++++++
     .../josm/actions/AlignInCircleActionTest.java | 64 +++++++++++++++++
     3 files changed, 202 insertions(+)
     create mode 100644 test/data/alignCircleBuildingsAfter.osm
     create mode 100644 test/data/alignCircleBuildingsBefore.osm
    
    diff --git a/test/data/alignCircleBuildingsAfter.osm b/test/data/alignCircleBuildingsAfter.osm
    new file mode 100644
    index 0000000000..16b8bfc149
    - +  
     1<?xml version='1.0' encoding='UTF-8'?>
     2<osm version='0.6' generator='JOSM'>
     3  <node id='-201' action='modify' visible='true' lat='8.18118921225' lon='32.15483196352' />
     4  <node id='-202' action='modify' visible='true' lat='8.18119339651' lon='32.15483624212' />
     5  <node id='-203' action='modify' visible='true' lat='8.1811987769' lon='32.15483881688' />
     6  <node id='-204' action='modify' visible='true' lat='8.18120470447' lon='32.15483937724' />
     7  <node id='-205' action='modify' visible='true' lat='8.18121046427' lon='32.15483785561' />
     8  <node id='-206' action='modify' visible='true' lat='8.18121536158' lon='32.15483443553' />
     9  <node id='-207' action='modify' visible='true' lat='8.18121880571' lon='32.15482952951' />
     10  <node id='-208' action='modify' visible='true' lat='8.18122038125' lon='32.15482372927' />
     11  <node id='-209' action='modify' visible='true' lat='8.18121989817' lon='32.15481773443' />
     12  <node id='-210' action='modify' visible='true' lat='8.18121741473' lon='32.15481226805' />
     13  <node id='-211' action='modify' visible='true' lat='8.18121323048' lon='32.15480798944' />
     14  <node id='-212' action='modify' visible='true' lat='8.18120785009' lon='32.15480541468' />
     15  <node id='-213' action='modify' visible='true' lat='8.18120192252' lon='32.15480485432' />
     16  <node id='-214' action='modify' visible='true' lat='8.18119616272' lon='32.15480637595' />
     17  <node id='-215' action='modify' visible='true' lat='8.18119126541' lon='32.15480979603' />
     18  <node id='-216' action='modify' visible='true' lat='8.18118782128' lon='32.15481470206' />
     19  <node id='-217' action='modify' visible='true' lat='8.18118624574' lon='32.15482050229' />
     20  <node id='-218' action='modify' visible='true' lat='8.18118672882' lon='32.15482649713' />
     21  <node id='-101' action='modify' visible='true' lat='8.18124542497' lon='32.15480713489' />
     22  <node id='-102' action='modify' visible='true' lat='8.18125347379' lon='32.15481337498' />
     23  <node id='-103' action='modify' visible='true' lat='8.18126361593' lon='32.1548136437' />
     24  <node id='-104' action='modify' visible='true' lat='8.18127197743' lon='32.1548078384' />
     25  <node id='-105' action='modify' visible='true' lat='8.18127536449' lon='32.15479817652' />
     26  <node id='-106' action='modify' visible='true' lat='8.18127248336' lon='32.15478834856' />
     27  <node id='-107' action='modify' visible='true' lat='8.18126443454' lon='32.15478210847' />
     28  <node id='-108' action='modify' visible='true' lat='8.18125429241' lon='32.15478183976' />
     29  <node id='-109' action='modify' visible='true' lat='8.1812459309' lon='32.15478764505' />
     30  <node id='-110' action='modify' visible='true' lat='8.18124254385' lon='32.15479730693' />
     31  <way id='-200' action='modify' visible='true'>
     32    <nd ref='-201' />
     33    <nd ref='-202' />
     34    <nd ref='-203' />
     35    <nd ref='-204' />
     36    <nd ref='-205' />
     37    <nd ref='-206' />
     38    <nd ref='-207' />
     39    <nd ref='-208' />
     40    <nd ref='-209' />
     41    <nd ref='-210' />
     42    <nd ref='-211' />
     43    <nd ref='-212' />
     44    <nd ref='-213' />
     45    <nd ref='-214' />
     46    <nd ref='-215' />
     47    <nd ref='-216' />
     48    <nd ref='-217' />
     49    <nd ref='-218' />
     50    <nd ref='-201' />
     51    <tag k='building' v='yes' />
     52    <tag k='test' v='second' />
     53  </way>
     54  <way id='-100' action='modify' visible='true'>
     55    <nd ref='-101' />
     56    <nd ref='-102' />
     57    <nd ref='-103' />
     58    <nd ref='-104' />
     59    <nd ref='-105' />
     60    <nd ref='-106' />
     61    <nd ref='-107' />
     62    <nd ref='-108' />
     63    <nd ref='-109' />
     64    <nd ref='-110' />
     65    <nd ref='-101' />
     66    <tag k='building' v='yes' />
     67    <tag k='test' v='first' />
     68  </way>
     69</osm>
  • new file test/data/alignCircleBuildingsBefore.osm

    diff --git a/test/data/alignCircleBuildingsBefore.osm b/test/data/alignCircleBuildingsBefore.osm
    new file mode 100644
    index 0000000000..d10e42839c
    - +  
     1<?xml version='1.0' encoding='UTF-8'?>
     2<osm version='0.6' generator='JOSM'>
     3  <node id='-201' action='modify' visible='true' lat='8.18118921225' lon='32.15483196352' />
     4  <node id='-202' action='modify' visible='true' lat='8.18118681129' lon='32.1548268042' />
     5  <node id='-203' action='modify' visible='true' lat='8.18118619859' lon='32.15482113682' />
     6  <node id='-204' action='modify' visible='true' lat='8.18118744056' lon='32.15481557553' />
     7  <node id='-205' action='modify' visible='true' lat='8.18119040259' lon='32.15481072297' />
     8  <node id='-206' action='modify' visible='true' lat='8.18119476373' lon='32.154807105' />
     9  <node id='-207' action='modify' visible='true' lat='8.18120005137' lon='32.15480511368' />
     10  <node id='-208' action='modify' visible='true' lat='8.1812056925' lon='32.15480496481' />
     11  <node id='-209' action='modify' visible='true' lat='8.18121107584' lon='32.1548066745' />
     12  <node id='-210' action='modify' visible='true' lat='8.18121561801' lon='32.1548100575' />
     13  <node id='-211' action='modify' visible='true' lat='8.1812188268' lon='32.1548147472' />
     14  <node id='-212' action='modify' visible='true' lat='8.18122035447' lon='32.15482023541' />
     15  <node id='-213' action='modify' visible='true' lat='8.18122003548' lon='32.15482592737' />
     16  <node id='-214' action='modify' visible='true' lat='8.18121790441' lon='32.1548312063' />
     17  <node id='-215' action='modify' visible='true' lat='8.18120930109' lon='32.15483834355' />
     18  <node id='-216' action='modify' visible='true' lat='8.18120376113' lon='32.15483942844' />
     19  <node id='-217' action='modify' visible='true' lat='8.18119817269' lon='32.15483863724' />
     20  <node id='-218' action='modify' visible='true' lat='8.18119314131' lon='32.15483605568' />
     21  <node id='-101' action='modify' visible='true' lat='8.18124560591' lon='32.15480700927' />
     22  <node id='-102' action='modify' visible='true' lat='8.18125370049' lon='32.15481306718' />
     23  <node id='-103' action='modify' visible='true' lat='8.18126443735' lon='32.15481416717' />
     24  <node id='-104' action='modify' visible='true' lat='8.18127197775' lon='32.15480725579' />
     25  <node id='-105' action='modify' visible='true' lat='8.18127517917' lon='32.15479760626' />
     26  <node id='-106' action='modify' visible='true' lat='8.18127215504' lon='32.15478789853' />
     27  <node id='-107' action='modify' visible='true' lat='8.18126406047' lon='32.15478184063' />
     28  <node id='-108' action='modify' visible='true' lat='8.18125398734' lon='32.15478174647' />
     29  <node id='-109' action='modify' visible='true' lat='8.1812457832' lon='32.15478765201' />
     30  <node id='-110' action='modify' visible='true' lat='8.18124258179' lon='32.15479730155' />
     31  <way id='-200' action='modify' visible='true'>
     32    <nd ref='-201' />
     33    <nd ref='-202' />
     34    <nd ref='-203' />
     35    <nd ref='-204' />
     36    <nd ref='-205' />
     37    <nd ref='-206' />
     38    <nd ref='-207' />
     39    <nd ref='-208' />
     40    <nd ref='-209' />
     41    <nd ref='-210' />
     42    <nd ref='-211' />
     43    <nd ref='-212' />
     44    <nd ref='-213' />
     45    <nd ref='-214' />
     46    <nd ref='-215' />
     47    <nd ref='-216' />
     48    <nd ref='-217' />
     49    <nd ref='-218' />
     50    <nd ref='-201' />
     51    <tag k='building' v='yes' />
     52    <tag k='test' v='second' />
     53  </way>
     54  <way id='-100' action='modify' visible='true'>
     55    <nd ref='-101' />
     56    <nd ref='-102' />
     57    <nd ref='-103' />
     58    <nd ref='-104' />
     59    <nd ref='-105' />
     60    <nd ref='-106' />
     61    <nd ref='-107' />
     62    <nd ref='-108' />
     63    <nd ref='-109' />
     64    <nd ref='-110' />
     65    <nd ref='-101' />
     66    <tag k='building' v='yes' />
     67    <tag k='test' v='first' />
     68  </way>
     69</osm>
  • test/unit/org/openstreetmap/josm/actions/AlignInCircleActionTest.java

    diff --git a/test/unit/org/openstreetmap/josm/actions/AlignInCircleActionTest.java b/test/unit/org/openstreetmap/josm/actions/AlignInCircleActionTest.java
    index 5f33504bbb..1643bb4568 100644
    a b final class AlignInCircleActionTest {  
    181181            }
    182182        }
    183183    }
     184
     185    /**
     186     * Test case: Circularize a batch of (two) buildings.
     187     * @throws Exception if an error occurs
     188     */
     189    @Test
     190    void testMultipleWaysSelected() throws Exception
     191    {
     192        DataSet before = OsmReader.parseDataSet(Files.newInputStream(Paths.get(TestUtils.getTestDataRoot(), "alignCircleBuildingsBefore.osm")), null);
     193        Way firstBefore = null;
     194        Way secondBefore = null;
     195
     196        for (Way w : before.getWays()) {
     197            if ("first".equals(w.get("test"))) {
     198                firstBefore = w;
     199            } else if ("second".equals(w.get("test"))) {
     200                secondBefore = w;
     201            } else {
     202                assertTrue(false);  // must not be possible
     203            }
     204        }
     205
     206        assertNotNull(firstBefore);
     207        assertNotNull(secondBefore);
     208
     209        before.clearSelection();
     210        before.addSelected(firstBefore);
     211        before.addSelected(secondBefore);
     212
     213        Command c = AlignInCircleAction.buildCommand(before);
     214        c.executeCommand();
     215
     216        DataSet after = OsmReader.parseDataSet(Files.newInputStream(Paths.get(TestUtils.getTestDataRoot(), "alignCircleBuildingsAfter.osm")), null);
     217        Way firstAfter = null;
     218        Way secondAfter = null;
     219
     220        for (Way w : after.getWays()) {
     221            if ("first".equals(w.get("test"))) {
     222                firstAfter = w;
     223            } else if ("second".equals(w.get("test"))) {
     224                secondAfter = w;
     225            } else {
     226                assertTrue(false);  // must not be possible
     227            }
     228        }
     229
     230        assertNotNull(firstAfter);
     231        assertEquals(firstAfter.getNodesCount(), firstBefore.getNodesCount());
     232        for (int i = 0; i < firstAfter.getNodesCount(); i++) {
     233            Node bn = firstBefore.getNode(i);
     234            Node an = firstAfter.getNode(i);
     235            assertEquals(bn.lat(), an.lat(), 1e-5);
     236            assertEquals(bn.lon(), an.lon(), 1e-5);
     237        }
     238
     239        assertNotNull(secondAfter);
     240        assertEquals(secondAfter.getNodesCount(), secondBefore.getNodesCount());
     241        for (int i = 0; i < secondAfter.getNodesCount(); i++) {
     242            Node bn = secondBefore.getNode(i);
     243            Node an = secondAfter.getNode(i);
     244            assertEquals(bn.lat(), an.lat(), 1e-5);
     245            assertEquals(bn.lon(), an.lon(), 1e-5);
     246        }
     247    }
    184248}