diff --git a/test/modules/multi-image.js b/test/modules/multi-image.js index 4cbd5211..1dc9cbca 100644 --- a/test/modules/multi-image.js +++ b/test/modules/multi-image.js @@ -217,7 +217,7 @@ var firstImage = viewer.world.getItemAt(0); firstImage.addHandler('fully-loaded-change', function() { var imageData = viewer.drawer.context.getImageData(0, 0, - 500 * OpenSeadragon.pixelDensityRatio, 500 * density); + 500 * density, 500 * density); // Pixel 250,250 will be in the hole of the A var expectedVal = getPixelValue(imageData, 250 * density, 250 * density); diff --git a/test/modules/tilesource.js b/test/modules/tilesource.js index 59d8b77f..71fb053d 100644 --- a/test/modules/tilesource.js +++ b/test/modules/tilesource.js @@ -1,32 +1,32 @@ /* global module, ok, equal, start, test, testLog, Util */ (function() { - + module('TileSource', { setup: function() { testLog.reset(); } }); - - + + test("should set sane tile size defaults", function() { var source = new OpenSeadragon.TileSource(); - + equal(source.getTileWidth(), 0, "getTileWidth() should return 0 if not provided a size"); equal(source.getTileHeight(), 0, "getTileHeight() should return 0 if not provided a size"); }); - + test("providing tileSize", function(){ var tileSize = 256, source = new OpenSeadragon.TileSource({ tileSize: tileSize }); - + equal(source.tileSize, undefined, "tileSize should not be set on the tileSource"); equal(source.getTileWidth(), tileSize, "getTileWidth() should equal tileSize"); equal(source.getTileHeight(), tileSize, "getTileHeight() should equal tileSize"); }); - - + + test("providing tileWidth and tileHeight", function(){ var tileWidth = 256, tileHeight = 512, @@ -34,7 +34,7 @@ tileWidth: tileWidth, tileHeight: tileHeight }); - + equal(source._tileWidth, tileWidth, "tileWidth option should set _tileWidth"); equal(source._tileHeight, tileHeight, "tileHeight option should set _tileHeight"); equal(source.tileWidth, undefined, "tileWidth should be renamed _tileWidth"); @@ -42,10 +42,49 @@ equal(source.getTileWidth(), tileWidth, "getTileWidth() should equal tileWidth"); equal(source.getTileHeight(), tileHeight, "getTileHeight() should equal tileHeight"); }); - + test('getTileSize() deprecation', function() { var source = new OpenSeadragon.TileSource(); Util.testDeprecation(source, 'getTileSize'); }); + test('getTileAtPoint', function() { + var tileSource = new OpenSeadragon.TileSource({ + width: 1500, + height: 1000, + tileWidth: 200, + tileHeight: 150, + tileOverlap: 1, + }); + + equal(tileSource.maxLevel, 11, "The max level should be 11."); + + function assertTileAtPoint(level, position, expected) { + var actual = tileSource.getTileAtPoint(level, position); + ok(actual.equals(expected), "The tile at level " + level + + ", position " + position.toString() + + " should be tile " + expected.toString() + + " got " + actual.toString()); + } + + assertTileAtPoint(11, new OpenSeadragon.Point(0, 0), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(11, new OpenSeadragon.Point(0.5, 0.5), new OpenSeadragon.Point(3, 5)); + assertTileAtPoint(11, new OpenSeadragon.Point(1, 10 / 15), new OpenSeadragon.Point(7, 6)); + + assertTileAtPoint(10, new OpenSeadragon.Point(0, 0), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(10, new OpenSeadragon.Point(0.5, 0.5), new OpenSeadragon.Point(1, 2)); + assertTileAtPoint(10, new OpenSeadragon.Point(1, 10 / 15), new OpenSeadragon.Point(3, 3)); + + assertTileAtPoint(9, new OpenSeadragon.Point(0, 0), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(9, new OpenSeadragon.Point(0.5, 0.5), new OpenSeadragon.Point(0, 1)); + assertTileAtPoint(9, new OpenSeadragon.Point(1, 10 / 15), new OpenSeadragon.Point(1, 1)); + + // For all other levels, there is only one tile. + for (var level = 8; level >= 0; level--) { + assertTileAtPoint(level, new OpenSeadragon.Point(0, 0), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(level, new OpenSeadragon.Point(0.5, 0.5), new OpenSeadragon.Point(0, 0)); + assertTileAtPoint(level, new OpenSeadragon.Point(1, 10 / 15), new OpenSeadragon.Point(0, 0)); + } + }); + }());