public virtual void LongitudeToTileXTest()
        {
            for (sbyte zoomLevel = ZOOM_LEVEL_MIN; zoomLevel <= ZOOM_LEVEL_MAX; ++zoomLevel)
            {
                long tileX = MercatorProjection.LongitudeToTileX(LatLongUtils.LONGITUDE_MIN, zoomLevel);
                Assert.AreEqual(0, tileX);
                tileX = MercatorProjection.LongitudeToTileX(LatLongUtils.LONGITUDE_MIN, MercatorProjection.ZoomLevelToScaleFactor(zoomLevel));
                Assert.AreEqual(0, tileX);

                tileX = MercatorProjection.LongitudeToTileX(LatLongUtils.LONGITUDE_MAX, zoomLevel);
                Assert.AreEqual(Tile.GetMaxTileNumber(zoomLevel), tileX);
                tileX = MercatorProjection.LongitudeToTileX(LatLongUtils.LONGITUDE_MAX, MercatorProjection.ZoomLevelToScaleFactor(zoomLevel));
                Assert.AreEqual(Tile.GetMaxTileNumber(zoomLevel), tileX);
            }
        }
        public virtual void LatitudeToTileYTest()
        {
            for (sbyte zoomLevel = ZOOM_LEVEL_MIN; zoomLevel <= ZOOM_LEVEL_MAX; ++zoomLevel)
            {
                long tileY = MercatorProjection.LatitudeToTileY(MercatorProjection.LATITUDE_MAX, zoomLevel);
                Assert.AreEqual(0, tileY);
                tileY = MercatorProjection.LatitudeToTileY(MercatorProjection.LATITUDE_MAX, MercatorProjection.ZoomLevelToScaleFactor(zoomLevel));
                Assert.AreEqual(0, tileY);

                tileY = MercatorProjection.LatitudeToTileY(MercatorProjection.LATITUDE_MIN, zoomLevel);
                Assert.AreEqual(Tile.GetMaxTileNumber(zoomLevel), tileY);
                tileY = MercatorProjection.LatitudeToTileY(MercatorProjection.LATITUDE_MIN, MercatorProjection.ZoomLevelToScaleFactor(zoomLevel));
                Assert.AreEqual(Tile.GetMaxTileNumber(zoomLevel), tileY);
            }
        }