diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/ChallengeParserTest.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/ChallengeParserTest.java index 7fcaf5d..420e2a7 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/ChallengeParserTest.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/ChallengeParserTest.java @@ -28,13 +28,24 @@ void testChallenge15318() { final var expected = new Challenge(15318, "Add direction to Stop - USA Los Angeles Timezone", Instant.parse("2020-11-28T18:22:24.399Z"), Instant.parse("2023-01-24T14:21:34.897Z"), "This challenge will show every [highway=stop](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dstop) without [direction=*](https://wiki.openstreetmap.org/wiki/Key:direction). Your goal is to add tag \"direction\" with value: \"forward\", \"backward\" or \"both\" for every stop. Read article [highway=stop](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dstop) to know how to map.\n\n#### Overpass query\n[All my queries](https://wiki.openstreetmap.org/wiki/User:Binnette/OverpassQueries)\n\n#### About Binnette\n[Twitch](https://www.twitch.tv/binnettetv) - [Twitter](https://twitter.com/BinnetteBin) - [Wiki](https://wiki.openstreetmap.org/wiki/User:Binnette)", - false, "", new ChallengeGeneral(918586, 39866, "Add tag direction with value: \"forward\", \"backward\" or \"both\" for every stop. Read article [highway=stop](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dstop) to know how to map.\n\nEx: direction=forward / direction=backward / direction=both\n\nNote:\n- for this usecase iD editor is great and shows directions.\n- with iD to change direction, click on the node and press v (reverse shortcut).", 2, "Add direction=forward/backward/both to [highway=stop](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dstop).", true, false, 0, 1674515454, "Add tag direction to highway=stop - USA LA Timezone #maproulette", "", false, new long[0], false), - new ChallengeCreation("area[name=\"America/Los_Angeles Timezone\"]->.a;\nnode[\"highway\"=\"stop\"][!\"direction\"][!\"stop\"](area.a);\nway(bn)[\"highway\"][\"oneway\"!=\"yes\"];\nnode(w)[\"highway\"=\"stop\"][!\"direction\"];\nout skel;", "", "node"), + false, "", + new ChallengeGeneral(918586, 39866, + "Add tag direction with value: \"forward\", \"backward\" or \"both\" for every stop. Read article [highway=stop](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dstop) to know how to map.\n\nEx: direction=forward / direction=backward / direction=both\n\nNote:\n- for this usecase iD editor is great and shows directions.\n- with iD to change direction, click on the node and press v (reverse shortcut).", + 2, + "Add direction=forward/backward/both to [highway=stop](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dstop).", + true, false, 0, 1674515454, "Add tag direction to highway=stop - USA LA Timezone #maproulette", + "", false, new long[0], false), + new ChallengeCreation( + "area[name=\"America/Los_Angeles Timezone\"]->.a;\nnode[\"highway\"=\"stop\"][!\"direction\"][!\"stop\"](area.a);\nway(bn)[\"highway\"][\"oneway\"!=\"yes\"];\nnode(w)[\"highway\"=\"stop\"][!\"direction\"];\nout skel;", + "", "node"), new ChallengePriority(Priority.LOW, "{}", "{}", "{}"), - new ChallengeExtra(19, 3, 19, -1, "", "", false, "", "", null, null, false, false, "[]", "", false, null), + new ChallengeExtra(19, 3, 19, -1, "", "", false, "", "", null, null, false, false, "[]", "", false, + null), 3, "Request timeout to overpass-api.de/178.63.48.217:80 after 120000 ms", Instant.parse("2022-07-23T07:13:38.609Z"), Instant.parse("2022-07-23T07:13:38.609Z"), - new Point(38.3241717215975, -120.521573627918), "{\"type\":\"Polygon\",\"coordinates\":[[[-124.586248289365,32.5435948864956],[-124.586248289365,48.9940324531592],[-114.103130987674,48.9940324531592],[-114.103130987674,32.5435948864956],[-124.586248289365,32.5435948864956]]]}", 4, 29734); + new Point(38.3241717215975, -120.521573627918), + "{\"type\":\"Polygon\",\"coordinates\":[[[-124.586248289365,32.5435948864956],[-124.586248289365,48.9940324531592],[-114.103130987674,48.9940324531592],[-114.103130987674,32.5435948864956],[-124.586248289365,32.5435948864956]]]}", + 4, 29734); assertRecordsEqual(expected, challenge); } } diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/ClusteredPointParserTest.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/ClusteredPointParserTest.java index 2369928..b238761 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/ClusteredPointParserTest.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/ClusteredPointParserTest.java @@ -23,18 +23,19 @@ class ClusteredPointParserTest { @Test void testTask136226437() throws IOException { - final var box = TaskAPI.box(-108.4962538, 39.082404, -108.4962538, 39.082404, - 1_000, 0, true, null, null, false, true, true); + final var box = TaskAPI.box(-108.4962538, 39.082404, -108.4962538, 39.082404, 1_000, 0, true, null, null, false, + true, true); assertEquals(1, box.length); final var photoMC = new PublicUser(11197, null, "Photo_MC", null, null); final var actual = box[0]; - final var expected = new ClusteredPoint(136226437L, -1L, "", "861207014_way_1", - 27887L, "United States | Polygon has self intersection", new Point(39.082404, -108.4962538), - "", "", Instant.parse("2023-01-31T19:28:24.909Z"), null, 2, TaskStatus.TOO_HARD, null, + final var expected = new ClusteredPoint(136226437L, -1L, "", "861207014_way_1", 27887L, + "United States | Polygon has self intersection", new Point(39.082404, -108.4962538), "", "", + Instant.parse("2023-01-31T19:28:24.909Z"), null, 2, TaskStatus.TOO_HARD, null, Instant.parse("2022-10-18T03:19:56.028Z"), 923162L, photoMC, new PointReview(1, photoMC, new PublicUser(9724, null, "Jenn_Bh", null, null), - Instant.parse("2022-10-18T07:09:14.455Z"), null, null, - null, Instant.parse("2022-10-18T07:08:52.469Z"), new long[0]), 0, null, false); + Instant.parse("2022-10-18T07:09:14.455Z"), null, null, null, + Instant.parse("2022-10-18T07:08:52.469Z"), new long[0]), + 0, null, false); assertRecordsEqual(expected, actual); } } diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/GeometryParserTest.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/GeometryParserTest.java index 6a70812..8e990fa 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/GeometryParserTest.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/GeometryParserTest.java @@ -1,3 +1,4 @@ +// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.maproulette.api.parsers; import static org.junit.jupiter.api.Assertions.assertAll; diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/TaskParserTest.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/TaskParserTest.java index 962af9e..d6b6a0f 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/TaskParserTest.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/api/parsers/TaskParserTest.java @@ -37,22 +37,22 @@ class TaskParserTest { void testTaskParsing135045992() { final var task = assertDoesNotThrow(() -> TaskAPI.start(135045992)); final var expected = new Task(135045992, "way/131190351", Instant.parse("2022-08-06T15:23:36.531Z"), - Instant.parse("2022-08-06T15:23:36.531Z"), 24092, "", - new Point(36.0819446365856, -119.104608317353), task.geometries(), - new OSMChange(new ElementCreate[0], new ElementUpdate[]{ - new ElementUpdate(131190351L, OsmPrimitiveType.WAY, Integer.MIN_VALUE, new ElementTagChange( - Map.of("landuse", "farmland", "FMMP_modified", "yes"), new String[0] - )) - }), TaskStatus.CREATED, null, null, null, - new TaskReviewFields(null, null, null, null, null, - null, null, null, null, null), - 0, -1L, null, null, false, null, ""); + Instant.parse("2022-08-06T15:23:36.531Z"), 24092, "", new Point(36.0819446365856, -119.104608317353), + task.geometries(), + new OSMChange(new ElementCreate[0], + new ElementUpdate[] { new ElementUpdate(131190351L, OsmPrimitiveType.WAY, Integer.MIN_VALUE, + new ElementTagChange(Map.of("landuse", "farmland", "FMMP_modified", "yes"), + new String[0])) }), + TaskStatus.CREATED, null, null, null, + new TaskReviewFields(null, null, null, null, null, null, null, null, null, null), 0, -1L, null, null, + false, null, ""); assertRecordsEqual(expected, task); // Check geometries final var way = task.geometries().getWays().iterator().next(); assertAll("Tags were improperly parsed", () -> assertEquals("way/131190351", way.get("@id")), () -> assertEquals("28.9408234929", way.get("acres")), - () -> assertEquals("http://www.consrv.ca.gov/dlrp/fmmp/products/Pages/DownloadGISdata.aspx", way.get("source")), + () -> assertEquals("http://www.consrv.ca.gov/dlrp/fmmp/products/Pages/DownloadGISdata.aspx", + way.get("source")), () -> assertEquals("farmland", way.get("landuse")), () -> assertEquals("Tulare", way.get("addr:county")), () -> assertEquals("Farmland Mapping and Monitoring Program", way.get("attribution")), @@ -67,12 +67,11 @@ void testTaskParsing135045992() { @Test void testTaskParsing134808786() { final var task = assertDoesNotThrow(() -> TaskAPI.start(134808786)); - final var expected = new Task(134808786, "node/-103005", Instant.parse("2022-08-04T15:44:15.335Z"), Instant.parse("2022-08-04T15:44:15.335Z"), - 28467, "", new Point(43.3719671, -82.9782727), task.geometries(), - task.cooperativeWork(), TaskStatus.CREATED, null, null, null, - new TaskReviewFields(null, null, null, null, null, - null, null, null, null, null), - 0, -1L, null, null, false, null, ""); + final var expected = new Task(134808786, "node/-103005", Instant.parse("2022-08-04T15:44:15.335Z"), + Instant.parse("2022-08-04T15:44:15.335Z"), 28467, "", new Point(43.3719671, -82.9782727), + task.geometries(), task.cooperativeWork(), TaskStatus.CREATED, null, null, null, + new TaskReviewFields(null, null, null, null, null, null, null, null, null, null), 0, -1L, null, null, + false, null, ""); assertRecordsEqual(expected, task); final var actualData = expected.cooperativeWorkAsOsc(); assertNotNull(actualData); @@ -83,15 +82,20 @@ void testTaskParsing134808786() { final var node = ds.getNodes().iterator().next(); assertEquals(43.3719671, node.lat(), ILatLon.MAX_SERVER_PRECISION); assertEquals(-82.9782727, node.lon(), ILatLon.MAX_SERVER_PRECISION); - assertEquals(Map.of("gnis:feature_id", "624965", "name", "Duff Creek", "waterway", "stream"), - node.getKeys()); + assertEquals(Map.of("gnis:feature_id", "624965", "name", "Duff Creek", "waterway", "stream"), node.getKeys()); assertTrue(node.isNew()); } @Test void testTaskParsing136226437() { final var task = assertDoesNotThrow(() -> TaskAPI.start(136226437)); - final var expected = new Task(136226437L, "861207014_way_1", Instant.parse("2022-09-15T18:50:39.354Z"), Instant.parse("2022-10-18T03:19:56.028Z"), 27887, "", new Point(39.082404, -108.4962538), task.geometries(), task.cooperativeWork(), TaskStatus.TOO_HARD, Instant.parse("2022-10-18T03:19:56.028Z"), 923162L, 11197L, new TaskReviewFields(1, 11197L, 9724L, Instant.parse("2022-10-18T07:09:14.455Z"), null, null, null, Instant.parse("2022-10-18T07:08:52.469Z"), null, null), 0, -1L, null, null, false, null, ""); + final var expected = new Task(136226437L, "861207014_way_1", Instant.parse("2022-09-15T18:50:39.354Z"), + Instant.parse("2022-10-18T03:19:56.028Z"), 27887, "", new Point(39.082404, -108.4962538), + task.geometries(), task.cooperativeWork(), TaskStatus.TOO_HARD, + Instant.parse("2022-10-18T03:19:56.028Z"), 923162L, 11197L, + new TaskReviewFields(1, 11197L, 9724L, Instant.parse("2022-10-18T07:09:14.455Z"), null, null, null, + Instant.parse("2022-10-18T07:08:52.469Z"), null, null), + 0, -1L, null, null, false, null, ""); assertRecordsEqual(expected, task); } } diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/data/IgnoreListTest.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/data/IgnoreListTest.java index 1efc184..353387d 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/data/IgnoreListTest.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/data/IgnoreListTest.java @@ -1,3 +1,4 @@ +// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.maproulette.data; import static org.junit.jupiter.api.Assertions.assertAll; @@ -21,15 +22,10 @@ void testIgnores() { } IgnoreList.ignoreTask(15); IgnoreList.ignoreChallenge(15); - assertAll(() -> assertTrue(IgnoreList.isTaskIgnored(0)), - () -> assertTrue(IgnoreList.isChallengeIgnored(0)), - () -> assertTrue(IgnoreList.isTaskIgnored(9)), - () -> assertTrue(IgnoreList.isChallengeIgnored(9)), - () -> assertTrue(IgnoreList.isTaskIgnored(15)), - () -> assertTrue(IgnoreList.isChallengeIgnored(15)), - () -> assertTrue(IgnoreList.isTaskIgnored(20)), - () -> assertTrue(IgnoreList.isChallengeIgnored(20)), - () -> assertTrue(IgnoreList.isTaskIgnored(29)), - () -> assertTrue(IgnoreList.isChallengeIgnored(29))); + assertAll(() -> assertTrue(IgnoreList.isTaskIgnored(0)), () -> assertTrue(IgnoreList.isChallengeIgnored(0)), + () -> assertTrue(IgnoreList.isTaskIgnored(9)), () -> assertTrue(IgnoreList.isChallengeIgnored(9)), + () -> assertTrue(IgnoreList.isTaskIgnored(15)), () -> assertTrue(IgnoreList.isChallengeIgnored(15)), + () -> assertTrue(IgnoreList.isTaskIgnored(20)), () -> assertTrue(IgnoreList.isChallengeIgnored(20)), + () -> assertTrue(IgnoreList.isTaskIgnored(29)), () -> assertTrue(IgnoreList.isChallengeIgnored(29))); } } \ No newline at end of file diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/data/TaskPrimitivesTest.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/data/TaskPrimitivesTest.java index 7a5080b..a76567c 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/data/TaskPrimitivesTest.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/data/TaskPrimitivesTest.java @@ -1,3 +1,4 @@ +// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.maproulette.data; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/gui/MRGuiHelperTest.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/gui/MRGuiHelperTest.java index 9dc7b3c..48799bd 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/gui/MRGuiHelperTest.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/gui/MRGuiHelperTest.java @@ -1,3 +1,4 @@ +// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.maproulette.gui; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; @@ -14,10 +15,12 @@ class MRGuiHelperTest { void testGetInstructionTextMustache() { final var task = assertDoesNotThrow(() -> TaskAPI.get(147197178)); final var instructions = MRGuiHelper.getInstructionText(task); - assertEquals(""" -
" + renderSelect + "
\n", markdownSelect), + return Arrays.asList(Arguments.of("" + renderSelect + "
\n", markdownSelect), Arguments.of("Matching: " + renderSelect + "
\n", "Matching: " + markdownSelect), Arguments.of("" + renderSelect + " values
\n", markdownSelect + " values"), - Arguments.of("Matching: " + renderSelect + " values
\n", "Matching: " + markdownSelect + " values"), - Arguments.of("\n\n
\n", - "[select \" \" name=\"Test Name\" values=\"One,Two,Three\"]") - ); + Arguments.of("Matching: " + renderSelect + " values
\n", + "Matching: " + markdownSelect + " values"), + Arguments.of( + "\n\n
\n", + "[select \" \" name=\"Test Name\" values=\"One,Two,Three\"]")); } @ParameterizedTest diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/LoggingHandler.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/LoggingHandler.java index df33f62..3b278a7 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/LoggingHandler.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/LoggingHandler.java @@ -35,7 +35,7 @@ */ @Documented @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE, ElementType.METHOD}) +@Target({ ElementType.TYPE, ElementType.METHOD }) @ExtendWith(LoggingHandler.LoggingHandlerImplementation.class) public @interface LoggingHandler { /** @@ -52,11 +52,14 @@ class LoggingHandlerImplementation implements BeforeEachCallback, AfterEachCallb @Override public void afterEach(ExtensionContext context) { - MainApplication.worker.submit(() -> { /* Sync thread */ }); - GuiHelper.runInEDTAndWait(() -> { /* Sync thread */ }); - final int failLevel = AnnotationSupport.findAnnotation(context.getElement(), LoggingHandler.class).map(LoggingHandler::value) - .orElse(AnnotationSupport.findAnnotation(context.getClass(), LoggingHandler.class).map(LoggingHandler::value) - .orElse(1000)); + MainApplication.worker.submit(() -> { + /* Sync thread */ }); + GuiHelper.runInEDTAndWait(() -> { + /* Sync thread */ }); + final int failLevel = AnnotationSupport.findAnnotation(context.getElement(), LoggingHandler.class) + .map(LoggingHandler::value) + .orElse(AnnotationSupport.findAnnotation(context.getClass(), LoggingHandler.class) + .map(LoggingHandler::value).orElse(1000)); ExtensionContext.Store store = context.getStore(ExtensionContext.Namespace.create(LoggingHandler.class)); TestHandler testHandler = store.get(TestHandler.class, TestHandler.class); Logging.getLogger().removeHandler(testHandler); @@ -64,9 +67,9 @@ public void afterEach(ExtensionContext context) { for (Handler handler : handlers) { Logging.getLogger().addHandler(handler); } - assertAll(testHandler.getRecords().stream() - .filter(logRecord -> logRecord.getLevel().intValue() >= failLevel) - .map(logRecord -> fail(logRecord.getMessage(), logRecord.getThrown()))); + assertAll( + testHandler.getRecords().stream().filter(logRecord -> logRecord.getLevel().intValue() >= failLevel) + .map(logRecord -> fail(logRecord.getMessage(), logRecord.getThrown()))); testHandler.clearRecords(); } @@ -81,8 +84,8 @@ public void beforeEach(ExtensionContext context) { store.put(TestHandler.class, testHandler); Logging.getLogger().addHandler(testHandler); // Ensure that exceptions thrown in the EDT are logged -- they weren't in testing - GuiHelper.runInEDTAndWaitWithException(() -> - Thread.currentThread().setUncaughtExceptionHandler((thread, throwable) -> Logging.error(throwable))); + GuiHelper.runInEDTAndWaitWithException(() -> Thread.currentThread() + .setUncaughtExceptionHandler((thread, throwable) -> Logging.error(throwable))); } @Override @@ -134,4 +137,3 @@ public void close() throws SecurityException { } } } - diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/MapRouletteConfig.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/MapRouletteConfig.java index 5520ce0..df1c68b 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/MapRouletteConfig.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/MapRouletteConfig.java @@ -57,9 +57,9 @@ public Extension() { @Override protected void onBeforeEach(WireMockRuntimeInfo wireMockRuntimeInfo) { - org.openstreetmap.josm.plugins.maproulette.config.MapRouletteConfig.setInstance( - new org.openstreetmap.josm.plugins.maproulette.config.MapRouletteConfig(wireMockRuntimeInfo.getHttpBaseUrl() + "/api/v2") - ); + org.openstreetmap.josm.plugins.maproulette.config.MapRouletteConfig + .setInstance(new org.openstreetmap.josm.plugins.maproulette.config.MapRouletteConfig( + wireMockRuntimeInfo.getHttpBaseUrl() + "/api/v2")); Config.getPref().put("osm-server.url", wireMockRuntimeInfo.getHttpBaseUrl() + "/api"); } @@ -85,14 +85,17 @@ protected void onAfterEach(WireMockRuntimeInfo wireMockRuntimeInfo) { class MapRouletteExtension extends ResponseDefinitionTransformer { @Override - public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource files, Parameters parameters) { + public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource files, + Parameters parameters) { if (request.getUrl().startsWith("/api/v2/task/") && request.getUrl().matches("/api/v2/task/\\d+")) { final var file = files.getTextFileNamed(request.getUrl().substring(1) + "/start"); if (file != null) { - final var builder = responseDefinition.wasConfigured() ? ResponseDefinitionBuilder.like(responseDefinition) : ResponseDefinitionBuilder.responseDefinition(); - return builder - .withStatus(HTTP_OK) - .withResponseBody(Body.ofBinaryOrText(file.readContents(), new ContentTypeHeader("application/json"))) + final var builder = responseDefinition.wasConfigured() + ? ResponseDefinitionBuilder.like(responseDefinition) + : ResponseDefinitionBuilder.responseDefinition(); + return builder.withStatus(HTTP_OK) + .withResponseBody( + Body.ofBinaryOrText(file.readContents(), new ContentTypeHeader("application/json"))) .build(); } } diff --git a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/RecordAssertion.java b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/RecordAssertion.java index b0249ef..d777a50 100644 --- a/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/RecordAssertion.java +++ b/src/test/unit/org/openstreetmap/josm/plugins/maproulette/util/RecordAssertion.java @@ -55,35 +55,47 @@ public static