Index: /applications/editors/josm/plugins/MicrosoftStreetside/build.gradle
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/build.gradle	(revision 34418)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/build.gradle	(revision 34419)
@@ -14,5 +14,7 @@
 
 apply from: 'gradle/tool-config.gradle'
-apply from: 'gradle/markdown.gradle'
+// TODO: repair Mapillary markdown task
+// error with subdir build/markdown
+//apply from: 'gradle/markdown.gradle'
 
 sourceCompatibility = '1.8'
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilder.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilder.java	(revision 34418)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilder.java	(revision 34419)
@@ -148,5 +148,5 @@
 					if(StreetsideProperties.DEBUGING_ENABLED.get()) {
 					  logger.debug(MessageFormat.format("Completed tile downloading task {0} in {1} seconds.",ff.get(),
-							(startTime - System.currentTimeMillis())/ 1000));
+							(System.currentTimeMillis())/ 1000 - startTime));
 					}
 				}
@@ -162,5 +162,5 @@
 
 		if (StreetsideProperties.DEBUGING_ENABLED.get()) {
-      logger.debug(MessageFormat.format("Tile imagery downloading tasks completed in {0} seconds.",  runTime/1000000));
+      logger.debug(MessageFormat.format("Tile imagery downloading tasks completed in {0} seconds.",  runTime/1000));
 		}
 
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/TileDownloadingTask.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/TileDownloadingTask.java	(revision 34418)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/TileDownloadingTask.java	(revision 34419)
@@ -101,5 +101,5 @@
 	public String call() throws Exception {
 
-		BufferedImage img = ImageIO.read(new Resty().bytes(
+	  BufferedImage img = ImageIO.read(new Resty().bytes(
 				StreetsideURL.VirtualEarth.streetsideTile(tileId, false).toExternalForm())
 				.stream());
Index: /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/StreetsideLayerTest.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/StreetsideLayerTest.java	(revision 34418)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/StreetsideLayerTest.java	(revision 34419)
@@ -73,4 +73,5 @@
   }
 
+  @Ignore
   @Test
   public void testClearInstance() {
@@ -78,5 +79,5 @@
     assertTrue(StreetsideLayer.hasInstance());
     JOSMTestRules.cleanLayerEnvironment();
-    //assertFalse(StreetsideLayer.hasInstance());
+    assertFalse(StreetsideLayer.hasInstance());
     StreetsideLayer.getInstance();
     assertTrue(StreetsideLayer.hasInstance());
Index: plications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilderTest.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilderTest.java	(revision 34418)
+++ 	(revision )
@@ -1,66 +1,0 @@
-/**
- *
- */
-package org.openstreetmap.josm.plugins.streetside.cubemap;
-
-import static org.junit.Assert.fail;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-
-/**
- * @author renerr18
- *
- */
-public class CubemapBuilderTest {
-
-  /**
-   * @throws java.lang.Exception
-   */
-  @BeforeClass
-  public static void setUpBeforeClass() throws Exception {
-  }
-
-  /**
-   * @throws java.lang.Exception
-   */
-  @AfterClass
-  public static void tearDownAfterClass() throws Exception {
-  }
-
-  /**
-   * @throws java.lang.Exception
-   */
-  @Before
-  public void setUp() throws Exception {
-  }
-
-  /**
-   * @throws java.lang.Exception
-   */
-  @After
-  public void tearDown() throws Exception {
-  }
-
-  /**
-   * Test method for {@link org.openstreetmap.josm.plugins.streetside.cubemap.CubemapBuilder#downloadCubemapImages(java.lang.String)}.
-   */
-  @Ignore
-  @Test
-  public final void testDownloadCubemapImages() {
-    fail("Not yet implemented"); // TODO
-  }
-
-  /**
-   * Test method for {@link org.openstreetmap.josm.plugins.streetside.cubemap.CubemapBuilder#tileAdded(java.lang.String)}.
-   */
-  @Ignore
-  @Test
-  public final void testTileAdded() {
-    fail("Not yet implemented"); // TODO
-  }
-
-}
Index: /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapUtilsTest.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapUtilsTest.java	(revision 34418)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapUtilsTest.java	(revision 34419)
@@ -1,10 +1,6 @@
 package org.openstreetmap.josm.plugins.streetside.cubemap;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -12,48 +8,97 @@
 public class CubemapUtilsTest {
 
-  @BeforeClass
-  public static void setUpBeforeClass() throws Exception {
+  @SuppressWarnings("static-method")
+  @Test
+  public final void testConvertDecimal2Quaternary() {
+   final long decimal0 = 680730040l;
+   final long decimal1 = 680931568l;
+   String res = CubemapUtils.convertDecimal2Quaternary(decimal0);
+   assertEquals("220210301312320", res);
+   res = CubemapUtils.convertDecimal2Quaternary(decimal1);
+   assertEquals("220211203003300", res);
   }
 
-  @AfterClass
-  public static void tearDownAfterClass() throws Exception {
+  @SuppressWarnings("static-method")
+  @Test
+  public final void testConvertQuaternary2Decimal() {
+    final String quadKey0 = "220210301312320";
+    final String quadKey1 = "220211203003300";
+    String res = CubemapUtils.convertQuaternary2Decimal(quadKey0);
+    assertEquals("680730040", res);
+    res = CubemapUtils.convertQuaternary2Decimal(quadKey1);
+    assertEquals("680931568", res);
   }
 
-  @Before
-  public void setUp() throws Exception {
+  @SuppressWarnings("static-method")
+  @Test
+  public final void testGetFaceNumberForCount() {
+    String faceNrFront = CubemapUtils.getFaceNumberForCount(0);
+    String faceNrRight = CubemapUtils.getFaceNumberForCount(1);
+    String faceNrBack = CubemapUtils.getFaceNumberForCount(2);
+    String faceNrLeft = CubemapUtils.getFaceNumberForCount(3);
+    String faceNrUp = CubemapUtils.getFaceNumberForCount(4);
+    String faceNrDown = CubemapUtils.getFaceNumberForCount(5);
+    assertEquals(faceNrFront, "01");
+    assertEquals(faceNrRight, "02");
+    assertEquals(faceNrBack, "03");
+    assertEquals(faceNrLeft, "10");
+    assertEquals(faceNrUp, "11");
+    assertEquals(faceNrDown, "12");
   }
 
-  @After
-  public void tearDown() throws Exception {
-  }
-
-  @Ignore
-  @Test
-  public final void testConvertDecimal2Quaternary() {
-    fail("Not yet implemented"); // TODO
-  }
-
-  @Ignore
-  @Test
-  public final void testConvertQuaternary2Decimal() {
-    fail("Not yet implemented"); // TODO
-  }
-
-  @Ignore
-  @Test
-  public final void testGetFaceNumberForCount() {
-    fail("Not yet implemented"); // TODO
-  }
-
+  @SuppressWarnings("static-method")
   @Ignore
   @Test
   public final void testGetCount4FaceNumber() {
-    fail("Not yet implemented"); // TODO
+    int count4Front = CubemapUtils.getCount4FaceNumber("01");
+    int count4Right = CubemapUtils.getCount4FaceNumber("02");
+    int count4Back = CubemapUtils.getCount4FaceNumber("03");
+    int count4Left = CubemapUtils.getCount4FaceNumber("10");
+    int count4Up = CubemapUtils.getCount4FaceNumber("11");
+    int count4Down = CubemapUtils.getCount4FaceNumber("12");
+    assertEquals(count4Front, 0);
+    assertEquals(count4Right, 1);
+    assertEquals(count4Back, 2);
+    assertEquals(count4Left, 3);
+    assertEquals(count4Up, 4);
+    assertEquals(count4Down, 5);
   }
 
-  @Ignore
+  @SuppressWarnings("static-method")
   @Test
   public final void testConvertDoubleCountNrto16TileNr() {
-    fail("Not yet implemented"); // TODO
+    String x0y0 = CubemapUtils.convertDoubleCountNrto16TileNr("00");
+    String x0y1 = CubemapUtils.convertDoubleCountNrto16TileNr("01");
+    String x0y2 = CubemapUtils.convertDoubleCountNrto16TileNr("02");
+    String x0y3 = CubemapUtils.convertDoubleCountNrto16TileNr("03");
+    String x1y0 = CubemapUtils.convertDoubleCountNrto16TileNr("10");
+    String x1y1 = CubemapUtils.convertDoubleCountNrto16TileNr("11");
+    String x1y2 = CubemapUtils.convertDoubleCountNrto16TileNr("12");
+    String x1y3 = CubemapUtils.convertDoubleCountNrto16TileNr("13");
+    String x2y0 = CubemapUtils.convertDoubleCountNrto16TileNr("20");
+    String x2y1 = CubemapUtils.convertDoubleCountNrto16TileNr("21");
+    String x2y2 = CubemapUtils.convertDoubleCountNrto16TileNr("22");
+    String x2y3 = CubemapUtils.convertDoubleCountNrto16TileNr("23");
+    String x3y0 = CubemapUtils.convertDoubleCountNrto16TileNr("30");
+    String x3y1 = CubemapUtils.convertDoubleCountNrto16TileNr("31");
+    String x3y2 = CubemapUtils.convertDoubleCountNrto16TileNr("32");
+    String x3y3 = CubemapUtils.convertDoubleCountNrto16TileNr("33");
+
+    assertEquals(x0y0, "00");
+    assertEquals(x0y1, "01");
+    assertEquals(x0y2, "10");
+    assertEquals(x0y3, "11");
+    assertEquals(x1y0, "02");
+    assertEquals(x1y1, "03");
+    assertEquals(x1y2,"12");
+    assertEquals(x1y3, "13");
+    assertEquals(x2y0, "20");
+    assertEquals(x2y1, "21");
+    assertEquals(x2y2, "30");
+    assertEquals(x2y3, "31");
+    assertEquals(x3y0, "22");
+    assertEquals(x3y1,"23");
+    assertEquals(x3y2, "32");
+    assertEquals(x3y3, "33");
   }
 
Index: /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/cubemap/TileDownloadingTaskTest.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/cubemap/TileDownloadingTaskTest.java	(revision 34418)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/cubemap/TileDownloadingTaskTest.java	(revision 34419)
@@ -1,10 +1,14 @@
 package org.openstreetmap.josm.plugins.streetside.cubemap;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
 import org.junit.Ignore;
 import org.junit.Test;
@@ -12,25 +16,18 @@
 public class TileDownloadingTaskTest {
 
-  @BeforeClass
-  public static void setUpBeforeClass() throws Exception {
-  }
-
-  @AfterClass
-  public static void tearDownAfterClass() throws Exception {
-  }
-
-  @Before
-  public void setUp() throws Exception {
-  }
-
-  @After
-  public void tearDown() throws Exception {
-  }
-
+  @SuppressWarnings("static-method")
   @Ignore
   @Test
   public final void testCall() {
-    fail("Not yet implemented"); // TODO
+    ExecutorService pool = Executors.newFixedThreadPool(1);
+    List<Callable<String>> tasks = new ArrayList<>(1);
+      tasks.add(new TileDownloadingTask("2202112030033001233"));
+      try {
+        List<Future<String>> results = pool.invokeAll(tasks);
+        assertEquals(results.get(0),"2202112030033001233");
+      } catch (InterruptedException e) {
+        e.printStackTrace();
+        fail("Test threw an exception.");
+      }
   }
-
 }
Index: /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/gui/ImageDisplayTest.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/gui/ImageDisplayTest.java	(revision 34418)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/gui/ImageDisplayTest.java	(revision 34419)
@@ -27,4 +27,5 @@
   private static final BufferedImage DUMMY_IMAGE = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
 
+  //TODO: fix broken Mapillary test
   @Ignore
   @Test
@@ -39,4 +40,6 @@
    * it only checks if the tested method runs through.
    */
+
+  // TODO: fix broken Mapillary test
   @Ignore
   @Test
@@ -66,4 +69,5 @@
    * it only checks if the tested method runs through.
    */
+  //TODO: fix broken Mapillary test
   @Ignore
   @Test
Index: /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/gui/StreetsidePreferenceSettingTest.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/gui/StreetsidePreferenceSettingTest.java	(revision 34418)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/gui/StreetsidePreferenceSettingTest.java	(revision 34419)
@@ -32,4 +32,5 @@
   public JOSMTestRules rules = new StreetsideTestRules().main();
 
+  // TODO: repair broken unit test from Mapillary
   @Ignore
   @Test
@@ -47,5 +48,4 @@
   }
 
-  @Ignore
   @Test
   public void testIsExpert() {
@@ -53,32 +53,5 @@
   }
 
-  @Ignore
-  @Test
-  public void testLoginLogout() {
-    if (GraphicsEnvironment.isHeadless()) {
-      return;
-    }
-    PreferenceTabbedPane tabs = new PreferenceTabbedPane();
-    tabs.buildGui();
-    StreetsidePreferenceSetting setting = new StreetsidePreferenceSetting();
-    setting.addGui(tabs);
-    setting.onLogout();
-
-    assertEquals(I18n.tr("Login"), ((JButton) getPrivateFieldValue(setting, "loginButton")).getText());
-    assertEquals(I18n.tr("You are currently not logged in."), ((JLabel) getPrivateFieldValue(setting, "loginLabel")).getText());
-    assertFalse(((JPanel) getPrivateFieldValue(setting, "loginPanel")).isAncestorOf(((JButton) getPrivateFieldValue(setting, "logoutButton"))));
-    assertTrue(((JPanel) getPrivateFieldValue(setting, "loginPanel")).isAncestorOf(((JButton) getPrivateFieldValue(setting, "loginButton"))));
-
-    String username = "TheStreetsideUsername";
-    setting.onLogin(username);
-
-    assertEquals(I18n.tr("Login"), ((JButton) getPrivateFieldValue(setting, "loginButton")).getText());
-    assertEquals(I18n.tr("You are logged in as ''{0}''.", username), ((JLabel) getPrivateFieldValue(setting, "loginLabel")).getText());
-    assertTrue(((JPanel) getPrivateFieldValue(setting, "loginPanel")).isAncestorOf(((JButton) getPrivateFieldValue(setting, "logoutButton"))));
-    assertFalse(((JPanel) getPrivateFieldValue(setting, "loginPanel")).isAncestorOf(((JButton) getPrivateFieldValue(setting, "loginButton"))));
-  }
-
   @SuppressWarnings("unchecked")
-  @Ignore
   @Test
   public void testOk() {
Index: /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/io/download/SequenceDownloadRunnableTest.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/io/download/SequenceDownloadRunnableTest.java	(revision 34418)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/io/download/SequenceDownloadRunnableTest.java	(revision 34419)
@@ -27,5 +27,4 @@
 
   private static final Function<Bounds, URL> SEARCH_SEQUENCES_URL_GEN = b -> {
-    // TODO: modify and use Streetside URL @rrh
     return SequenceDownloadRunnableTest.class.getResource("/api/v3/responses/searchSequences.json");
   };
@@ -37,18 +36,18 @@
   }
 
+  @Ignore
   @Test
-  @Ignore // TODO: fox!
   public void testRun1() throws IllegalArgumentException, IllegalAccessException {
     testNumberOfDecodedImages(4, SEARCH_SEQUENCES_URL_GEN, new Bounds(7.246497, 16.432955, 7.249027, 16.432976));
   }
 
+  @Ignore
   @Test
-  @Ignore // TODO: fox!
   public void testRun2() throws IllegalArgumentException, IllegalAccessException {
     testNumberOfDecodedImages(0, SEARCH_SEQUENCES_URL_GEN, new Bounds(0, 0, 0, 0));
   }
 
+  @Ignore
   @Test
-  @Ignore // TODO: fox!
   public void testRun3() throws IllegalArgumentException, IllegalAccessException {
     testNumberOfDecodedImages(0, b -> {
@@ -57,6 +56,6 @@
   }
 
+  @Ignore
   @Test
-  @Ignore // TODO: fox!
   public void testRun4() throws IllegalArgumentException, IllegalAccessException {
     StreetsideProperties.CUT_OFF_SEQUENCES_AT_BOUNDS.put(true);
@@ -64,6 +63,6 @@
   }
 
+  @Ignore
   @Test
-  @Ignore // TODO: fox!
   public void testRun5() throws IllegalArgumentException, IllegalAccessException {
     StreetsideProperties.CUT_OFF_SEQUENCES_AT_BOUNDS.put(true);
