public virtual void TileXToLongitudeTest()
        {
            foreach (int tileSize in TILE_SIZES)
            {
                for (sbyte zoomLevel = ZOOM_LEVEL_MIN; zoomLevel <= ZOOM_LEVEL_MAX; ++zoomLevel)
                {
                    double longitude = MercatorProjection.TileXToLongitude(0, zoomLevel);
                    Assert.AreEqual(LatLongUtils.LONGITUDE_MIN, longitude, 0);
                    longitude = MercatorProjection.TileXToLongitude(0, MercatorProjection.ZoomLevelToScaleFactor(zoomLevel));
                    Assert.AreEqual(LatLongUtils.LONGITUDE_MIN, longitude, 0);

                    long tileX = MercatorProjection.GetMapSize(zoomLevel, tileSize) / tileSize;
                    longitude = MercatorProjection.TileXToLongitude(tileX, zoomLevel);
                    Assert.AreEqual(LatLongUtils.LONGITUDE_MAX, longitude, 0);
                    tileX     = MercatorProjection.GetMapSizeWithScaleFactor(MercatorProjection.ZoomLevelToScaleFactor(zoomLevel), tileSize) / tileSize;
                    longitude = MercatorProjection.TileXToLongitude(tileX, MercatorProjection.ZoomLevelToScaleFactor(zoomLevel));
                    Assert.AreEqual(LatLongUtils.LONGITUDE_MAX, longitude, 0);
                }
            }
        }