diff --git a/test/modules/navigator.js b/test/modules/navigator.js index af658fac..78defc5a 100644 --- a/test/modules/navigator.js +++ b/test/modules/navigator.js @@ -4,7 +4,7 @@ var debug = false, viewer, displayRegion, - navigator, + navigatorElement, navigatorScaleFactor, contentStartFromLeft, contentStartFromTop, @@ -12,6 +12,20 @@ displayRegionHeight, topNavigatorClickAdjustment; + var resetTestVariables = function () { + if (viewer) { + viewer.close(); + } + displayRegion = null; + navigatorElement = null; + navigatorScaleFactor = null; + contentStartFromLeft = null; + contentStartFromTop = null; + displayRegionWidth = null; + displayRegionHeight = null; + topNavigatorClickAdjustment = 0; + }; + QUnit.module("navigator", { beforeEach: function () { Util.initializeTestDOM(); @@ -29,44 +43,41 @@ } }); - var resetTestVariables = function () { - if (viewer) { - viewer.close(); - } - displayRegion = null; - navigator = null; - navigatorScaleFactor = null; - contentStartFromLeft = null; - contentStartFromTop = null; - displayRegionWidth = null; - displayRegionHeight = null; - topNavigatorClickAdjustment = 0; - }; - var assessNavigatorLocation = function (assert, expectedX, expectedY) { - var navigator = $(".navigator"); - - Util.assessNumericValue(assert, expectedX, navigator.offset().left, 10, ' Navigator x Position'); - Util.assessNumericValue(assert, expectedY, navigator.offset().top, 10, ' Navigator y Position'); + navigatorElement = navigatorElement || $(".navigator"); + Util.assessNumericValue(assert, expectedX, navigatorElement.offset().left, 10, ' Navigator x Position'); + Util.assessNumericValue(assert, expectedY, navigatorElement.offset().top, 10, ' Navigator y Position'); }; var assessNavigatorSize = function (assert, expectedWidth, expectedHeight, msg) { - var navigator = $(".navigator"); - - Util.assessNumericValue(assert, expectedWidth, navigator.width(), 2, ' Navigator Width ' + (msg ? msg : '')); - Util.assessNumericValue(assert, expectedHeight, navigator.height(), 2, ' Navigator Height ' + (msg ? msg : '')); + msg = msg || ""; + navigatorElement = navigatorElement || $(".navigator"); + Util.assessNumericValue(assert, expectedWidth, navigatorElement.width(), 2, ' Navigator Width ' + msg); + Util.assessNumericValue(assert, expectedHeight, navigatorElement.height(), 2, ' Navigator Height ' + msg); }; var assessNavigatorAspectRatio = function (assert, expectedAspectRatio, variance, msg) { - var navigator = $(".navigator"); - - Util.assessNumericValue(assert, expectedAspectRatio, navigator.width() / navigator.height(), variance, ' Navigator Aspect Ratio ' + (msg ? msg : '')); + msg = msg || ""; + navigatorElement = navigatorElement || $(".navigator"); + Util.assessNumericValue( + assert, + expectedAspectRatio, + navigatorElement.width() / navigatorElement.height(), + variance, + ' Navigator Aspect Ratio ' + msg + ); }; var assessNavigatorArea = function (assert, expectedArea, msg) { - var navigator = $(".navigator"); - - Util.assessNumericValue(assert, expectedArea, navigator.width() * navigator.height(), Math.max(navigator.width(), navigator.height()), ' Navigator Area ' + (msg ? msg : '')); + msg = msg || ""; + navigatorElement = navigatorElement || $(".navigator"); + Util.assessNumericValue( + assert, + expectedArea, + navigatorElement.width() * navigatorElement.height(), + Math.max(navigatorElement.width(), navigatorElement.height()), + ' Navigator Area ' + msg + ); }; var navigatorRegionBoundsInPoints = function () { @@ -76,27 +87,33 @@ expectedDisplayRegionXLocation, expectedDisplayRegionYLocation; - if (navigator === null) { - navigator = $(".navigator"); + if (navigatorElement === null) { + navigatorElement = $(".navigator"); navigatorScaleFactor = Math.min( - navigator.width() / viewer.viewport._contentSize.x, - navigator.height() / viewer.viewport._contentSize.y); + navigatorElement.width() / viewer.viewport._contentSize.x, + navigatorElement.height() / viewer.viewport._contentSize.y + ); displayRegionWidth = viewer.viewport._contentSize.x * navigatorScaleFactor; displayRegionHeight = viewer.viewport._contentSize.y * navigatorScaleFactor; - contentStartFromLeft = (navigator.width() - displayRegionWidth) / 2; - contentStartFromTop = (navigator.height() - displayRegionHeight) / 2; + contentStartFromLeft = (navigatorElement.width() - displayRegionWidth) / 2; + contentStartFromTop = (navigatorElement.height() - displayRegionHeight) / 2; } expectedDisplayRegionWidth = viewer.viewport.getBounds().width * displayRegionWidth; expectedDisplayRegionHeight = viewer.viewport.getBounds().height * displayRegionHeight * viewer.source.aspectRatio; expectedDisplayRegionXLocation = viewer.viewport.getBounds().x * displayRegionWidth + contentStartFromLeft; expectedDisplayRegionYLocation = viewer.viewport.getBounds().y * displayRegionHeight * viewer.source.aspectRatio + contentStartFromTop; - regionBoundsInPoints = new OpenSeadragon.Rect(expectedDisplayRegionXLocation, expectedDisplayRegionYLocation, expectedDisplayRegionWidth, expectedDisplayRegionHeight); + regionBoundsInPoints = new OpenSeadragon.Rect( + expectedDisplayRegionXLocation, + expectedDisplayRegionYLocation, + expectedDisplayRegionWidth, + expectedDisplayRegionHeight + ); if (debug) { console.log('Image width: ' + viewer.viewport._contentSize.x + '\n' + 'Image height: ' + viewer.viewport._contentSize.y + '\n' + - 'navigator.width(): ' + navigator.width() + '\n' + - 'navigator.height(): ' + navigator.height() + '\n' + + 'navigatorElement.width(): ' + navigatorElement.width() + '\n' + + 'navigatorElement.height(): ' + navigatorElement.height() + '\n' + 'navigatorScaleFactor: ' + navigatorScaleFactor + '\n' + 'contentStartFromLeft: ' + contentStartFromLeft + '\n' + 'contentStartFromTop: ' + contentStartFromTop + '\n' + @@ -108,25 +125,34 @@ 'expectedDisplayRegionHeight: ' + expectedDisplayRegionHeight + '\n' ); } - return regionBoundsInPoints; - }; var assessDisplayRegion = function (assert, status) { - if (debug) { console.log(status); } var expectedBounds = navigatorRegionBoundsInPoints(); - Util.assessNumericValue(assert, expectedBounds.width, displayRegion.width() + viewer.navigator.totalBorderWidths.x, 2, status + ' Width synchronization'); - Util.assessNumericValue(assert, expectedBounds.height, displayRegion.height() + viewer.navigator.totalBorderWidths.y, 2, status + ' Height synchronization'); + Util.assessNumericValue( + assert, + expectedBounds.width, + displayRegion.width() + viewer.navigator.totalBorderWidths.x, + 2, + status + ' Width synchronization' + ); + Util.assessNumericValue( + assert, + expectedBounds.height, + displayRegion.height() + viewer.navigator.totalBorderWidths.y, + 2, + status + ' Height synchronization' + ); Util.assessNumericValue(assert, expectedBounds.x, displayRegion.position().left, 2, status + ' Left synchronization'); Util.assessNumericValue(assert, expectedBounds.y, displayRegion.position().top, 2, status + ' Top synchronization'); }; - var waitForViewer(assert, = function (assert) { - return function (handler, count, lastDisplayRegionLeft, lastDisplayWidth) { + var waitForViewer = function () { + return function (assert, handler, count, lastDisplayRegionLeft, lastDisplayWidth) { var viewerAndNavigatorDisplayReady = false, currentDisplayRegionLeft, currentDisplayWidth; @@ -151,17 +177,20 @@ Util.equalsWithVariance(assert, viewer.viewport.getBounds(true).width, viewer.viewport.getBounds().width, 0.0001); } catch (err) { + if(debug) { + console.log(err); + } //Ignore. Subsequent code will try again shortly } - if (( !viewerAndNavigatorDisplayReady) && count < 50) { + if (( !viewerAndNavigatorDisplayReady) && count < 200) { count++; setTimeout(function () { - waitForViewer(assert, (handler, count, currentDisplayRegionLeft, currentDisplayWidth); - }, 100); + waitForViewer(assert, handler, count, currentDisplayRegionLeft, currentDisplayWidth); + }, 50); } else { - if (count === 40) { - console.log("waitForViewer(assert, :" + + if (debug) { + console.log("waitForViewer :" + viewer.drawer + ":" + viewer.world.needsDraw() + ":" + viewerAndNavigatorDisplayReady + ":" + lastDisplayRegionLeft + ":" + currentDisplayRegionLeft + ":" + @@ -171,7 +200,9 @@ viewer.viewport.getBounds(true).width + ":" + viewer.viewport.getBounds().width + ":" + count); } - handler(); + if (handler) { + handler(assert); + } } }; }(); @@ -181,8 +212,8 @@ var $canvas = $(viewer.element).find('.openseadragon-canvas'), offset = $canvas.offset(), event = { - clientX:offset.left + locationX, - clientY:offset.top + locationY + clientX: offset.left + locationX, + clientY: offset.top + locationY }; $canvas .simulate(OpenSeadragon.MouseTracker.haveMouseEnter ? 'mouseenter' : 'mouseover', event) @@ -193,14 +224,46 @@ var simulateNavigatorDrag = function (viewer, distanceX, distanceY) { var $canvas = $(viewer.element).find('.displayregion'), event = { - dx:Math.floor(distanceX), - dy:Math.floor(distanceY) + dx: Math.floor(distanceX), + dy: Math.floor(distanceY) }; $canvas .simulate('drag', event); }; - var assessViewerInCorner = function (assert, theContentCorner) { + var dragNavigatorBackToCenter = function () { + var start = viewer.viewport.getBounds().getTopLeft(), + target = new OpenSeadragon.Point(0.5 - viewer.viewport.getBounds().width / 2, + 1 / viewer.source.aspectRatio / 2 - viewer.viewport.getBounds().height / 2), + delta = target.minus(start); + if (viewer.source.aspectRatio < 1) { + delta.y *= viewer.source.aspectRatio; + } + simulateNavigatorDrag(viewer.navigator, delta.x * displayRegionWidth, delta.y * displayRegionHeight); + }; + + var resizeElement = function ($element, width, height) { + $element.width(width); + $element.height(height); + }; + + + var assessViewerInCenter = function (assert) { + var yPositionVariance = 0.04; + if (viewer.source.aspectRatio < 1) { + yPositionVariance /= viewer.source.aspectRatio; + } + Util.assessNumericValue( + assert, + 1 / viewer.source.aspectRatio / 2, + viewer.viewport.getCenter().y, + yPositionVariance, + ' Viewer at center, y coord' + ); + Util.assessNumericValue(assert, 0.5, viewer.viewport.getCenter().x, 0.4, ' Viewer at center, x coord'); + }; + + var assessViewerInCorner = function (theContentCorner, assert) { return function () { var expectedXCoordinate, expectedYCoordinate; if (theContentCorner === "TOPLEFT") { @@ -220,100 +283,91 @@ expectedYCoordinate = 1 / viewer.source.aspectRatio - viewer.viewport.getBounds().height; } if (viewer.viewport.getBounds().width < 1) { - Util.assessNumericValue(assert, expectedXCoordinate, viewer.viewport.getBounds().x, 0.04, ' Viewer at ' + theContentCorner + ', x coord'); + Util.assessNumericValue( + assert, + expectedXCoordinate, + viewer.viewport.getBounds().x, + 0.04, + ' Viewer at ' + theContentCorner + ', x coord' + ); } if (viewer.viewport.getBounds().height < 1 / viewer.source.aspectRatio) { - Util.assessNumericValue(assert, expectedYCoordinate, viewer.viewport.getBounds().y, 0.04, ' Viewer at ' + theContentCorner + ', y coord'); + Util.assessNumericValue( + assert, + expectedYCoordinate, + viewer.viewport.getBounds().y, + 0.04, + ' Viewer at ' + theContentCorner + ', y coord' + ); } }; }; - var assessViewerInCenter = function (assert) { - var yPositionVariance = 0.04; - if (viewer.source.aspectRatio < 1) { - yPositionVariance = yPositionVariance / viewer.source.aspectRatio; - } - Util.assessNumericValue(assert, 1 / viewer.source.aspectRatio / 2, viewer.viewport.getCenter().y, yPositionVariance, ' Viewer at center, y coord'); - Util.assessNumericValue(assert, 0.5, viewer.viewport.getCenter().x, 0.4, ' Viewer at center, x coord'); - }; - - var clickOnNavigator = function (theContentCorner) { - return function () { - var xPos, - yPos; - if (theContentCorner === "TOPLEFT") { - xPos = contentStartFromLeft; - yPos = contentStartFromTop + topNavigatorClickAdjustment; - } - else if (theContentCorner === "TOPRIGHT") { - xPos = contentStartFromLeft + displayRegionWidth; - yPos = contentStartFromTop+ topNavigatorClickAdjustment; - } - else if (theContentCorner === "BOTTOMRIGHT") { - xPos = contentStartFromLeft + displayRegionWidth; - yPos = contentStartFromTop + displayRegionHeight; - } - else if (theContentCorner === "BOTTOMLEFT") { - xPos = contentStartFromLeft; - yPos = contentStartFromTop + displayRegionHeight; - } - simulateNavigatorClick(viewer.navigator, xPos, yPos); - }; - }; - - var dragNavigatorBackToCenter = function () { - var start = viewer.viewport.getBounds().getTopLeft(), - target = new OpenSeadragon.Point(0.5 - viewer.viewport.getBounds().width / 2, - 1 / viewer.source.aspectRatio / 2 - viewer.viewport.getBounds().height / 2), - delta = target.minus(start); - if (viewer.source.aspectRatio < 1) { - delta.y = delta.y * viewer.source.aspectRatio; - } - simulateNavigatorDrag(viewer.navigator, delta.x * displayRegionWidth, delta.y * displayRegionHeight); - }; - - var resizeElement = function ($element, width, height) { - $element.width(width); - $element.height(height); - }; - var assessNavigatorViewerPlacement = function (assert, seadragonProperties, testProperties) { var done = assert.async(); + + seadragonProperties.visibilityRatio = 1; + viewer = OpenSeadragon(seadragonProperties); + + var clickOnNavigator = function (theContentCorner) { + return function () { + var xPos, + yPos; + if (theContentCorner === "TOPLEFT") { + xPos = contentStartFromLeft; + yPos = contentStartFromTop + topNavigatorClickAdjustment; + } + else if (theContentCorner === "TOPRIGHT") { + xPos = contentStartFromLeft + displayRegionWidth; + yPos = contentStartFromTop + topNavigatorClickAdjustment; + } + else if (theContentCorner === "BOTTOMRIGHT") { + xPos = contentStartFromLeft + displayRegionWidth; + yPos = contentStartFromTop + displayRegionHeight; + } + else if (theContentCorner === "BOTTOMLEFT") { + xPos = contentStartFromLeft; + yPos = contentStartFromTop + displayRegionHeight; + } + simulateNavigatorClick(viewer.navigator, xPos, yPos); + }; + }; + var navigatorOperationScenarios = [ - {interactionOperation:clickOnNavigator("TOPRIGHT"), - assessmentOperation:assessViewerInCorner(assert, "TOPRIGHT"), - assessmentMessage:"After click on navigator on top right" }, - {interactionOperation:dragNavigatorBackToCenter, - assessmentOperation:assessViewerInCenter(assert), - assessmentMessage:"After drag on navigator from top right" }, - {interactionOperation:clickOnNavigator("BOTTOMLEFT"), - assessmentOperation:assessViewerInCorner(assert, "BOTTOMLEFT"), - assessmentMessage:"After click on navigator on bottom left" }, - {interactionOperation:dragNavigatorBackToCenter, - assessmentOperation:assessViewerInCenter(assert), - assessmentMessage:"After drag on navigator from bottom left" }, - {interactionOperation:clickOnNavigator("BOTTOMRIGHT"), - assessmentOperation:assessViewerInCorner(assert, "BOTTOMRIGHT"), - assessmentMessage:"After click on navigator on bottom right" }, - {interactionOperation:dragNavigatorBackToCenter, - assessmentOperation:assessViewerInCenter(assert), - assessmentMessage:"After drag on navigator from bottom right" }, - {interactionOperation:clickOnNavigator("TOPLEFT"), - assessmentOperation:assessViewerInCorner(assert, "TOPLEFT"), - assessmentMessage:"After click on navigator on top left" }, - {interactionOperation:dragNavigatorBackToCenter, - assessmentOperation:assessViewerInCenter(assert), - assessmentMessage:"After drag on navigator from top left" } + {interactionOperation: clickOnNavigator("TOPRIGHT"), + assessmentOperation: assessViewerInCorner("TOPRIGHT", assert), + assessmentMessage: "After click on navigator on top right"}, + {interactionOperation: dragNavigatorBackToCenter, + assessmentOperation: assessViewerInCenter, + assessmentMessage: "After drag on navigator from top right"}, + {interactionOperation: clickOnNavigator("BOTTOMLEFT"), + assessmentOperation: assessViewerInCorner("BOTTOMLEFT", assert), + assessmentMessage: "After click on navigator on bottom left"}, + {interactionOperation: dragNavigatorBackToCenter, + assessmentOperation: assessViewerInCenter, + assessmentMessage: "After drag on navigator from bottom left"}, + {interactionOperation: clickOnNavigator("BOTTOMRIGHT"), + assessmentOperation: assessViewerInCorner("BOTTOMRIGHT", assert), + assessmentMessage: "After click on navigator on bottom right"}, + {interactionOperation: dragNavigatorBackToCenter, + assessmentOperation: assessViewerInCenter, + assessmentMessage: "After drag on navigator from bottom right"}, + {interactionOperation: clickOnNavigator("TOPLEFT"), + assessmentOperation: assessViewerInCorner("TOPLEFT", assert), + assessmentMessage: "After click on navigator on top left"}, + {interactionOperation: dragNavigatorBackToCenter, + assessmentOperation: assessViewerInCenter, + assessmentMessage: "After drag on navigator from top left"} ], viewerResizeScenarios = [ - {resizeFactorX:0.5, resizeFactorY:1.0, assessmentMessage:"After Viewer Resize (50%, 100%)"}, - {resizeFactorX:1.0, resizeFactorY:0.5, assessmentMessage:"After Viewer Resize (100%, 50%)"}, - {resizeFactorX:1.0, resizeFactorY:1.0, assessmentMessage:"After Viewer Resize (100%, 100%)"} + {resizeFactorX: 0.5, resizeFactorY: 1.0, assessmentMessage: "After Viewer Resize (50%, 100%)"}, + {resizeFactorX: 1.0, resizeFactorY: 0.5, assessmentMessage: "After Viewer Resize (100%, 50%)"}, + {resizeFactorX: 1.0, resizeFactorY: 1.0, assessmentMessage: "After Viewer Resize (100%, 100%)"} ], navigatorResizeScenarios = [ - {resizeFactorX:0.75, resizeFactorY:1.0, assessmentMessage:"After Navigator Resize (75%, 100%)"}, - {resizeFactorX:1.0, resizeFactorY:0.75, assessmentMessage:"After Navigator Resize (100%, 75%)"}, - {resizeFactorX:1.0, resizeFactorY:1.0, assessmentMessage:"After Navigator Resize (100%, 100%)"} + {resizeFactorX: 0.75, resizeFactorY: 1.0, assessmentMessage: "After Navigator Resize (75%, 100%)"}, + {resizeFactorX: 1.0, resizeFactorY: 0.75, assessmentMessage: "After Navigator Resize (100%, 75%)"}, + {resizeFactorX: 1.0, resizeFactorY: 1.0, assessmentMessage: "After Navigator Resize (100%, 100%)"} ], autoFadeWaitTime = 100, navigatorElement = null, @@ -321,9 +375,6 @@ viewerOriginalSize = null, navigatorOriginalSize = null; - seadragonProperties.visibilityRatio = 1; - viewer = OpenSeadragon(seadragonProperties); - if ($.isNumeric(testProperties.topNavigatorClickAdjustment)) { topNavigatorClickAdjustment = testProperties.topNavigatorClickAdjustment; @@ -333,82 +384,112 @@ return function () { var nextStep = step + 1; assessDisplayRegion(assert, navigatorOperationScenarios[step].assessmentMessage); - navigatorOperationScenarios[step].assessmentOperation(); + navigatorOperationScenarios[step].assessmentOperation(assert); if (step === navigatorOperationScenarios.length - 1) { done(); } else { navigatorOperationScenarios[nextStep].interactionOperation(); - waitForViewer(assert, (assessNavigatorOperationAndTakeNextStep(nextStep)); + waitForViewer(assert, assessNavigatorOperationAndTakeNextStep(nextStep)); } }; }; - var assessAfterSnapback = function (assert) { + var assessAfterSnapback = function () { assessDisplayRegion(assert, "After snapback"); navigatorOperationScenarios[0].interactionOperation(); - waitForViewer(assert, (assessNavigatorOperationAndTakeNextStep(0)); + waitForViewer(assert, assessNavigatorOperationAndTakeNextStep(0)); }; - var assessAfterDragOnViewer = function (assert) { + var assessAfterDragOnViewer = function () { assessDisplayRegion(assert, "After pan"); viewer.viewport.applyConstraints(); - waitForViewer(assert, assessAfterSnapback(assert)); + waitForViewer(assert, assessAfterSnapback); }; - var assessAfterZoomOnViewer = function (assert) { + var assessAfterZoomOnViewer = function () { var target = new OpenSeadragon.Point(0.4, 0.4); assessDisplayRegion(assert, "After image zoom"); viewer.viewport.panTo(target); - waitForViewer(assert, (assessAfterDragOnViewer(assert)); + waitForViewer(assert, assessAfterDragOnViewer); }; - var assessAfterResizeNavigator = function (assert) { + var assessAfterResizeNavigator = function () { viewer.viewport.zoomTo(viewer.viewport.getZoom() * 2); - waitForViewer(assert, (assessAfterZoomOnViewer(assert)); + waitForViewer(assert, assessAfterZoomOnViewer); }; - var assessNavigatorResizeAndTakeNextStep = function (assert, step) { + var assessNavigatorResizeAndTakeNextStep = function (step) { return function () { var nextStep = step + 1; assessNavigatorSize(assert, navigatorOriginalSize.x * navigatorResizeScenarios[step].resizeFactorX, navigatorOriginalSize.y * navigatorResizeScenarios[step].resizeFactorY, navigatorResizeScenarios[step].assessmentMessage); assessDisplayRegion(assert, navigatorResizeScenarios[step].assessmentMessage); if (step === viewerResizeScenarios.length - 1) { - assessAfterResizeNavigator(assert); + assessAfterResizeNavigator(); } else { resizeElement(navigatorElement, navigatorOriginalSize.x * navigatorResizeScenarios[nextStep].resizeFactorX, navigatorOriginalSize.y * navigatorResizeScenarios[nextStep].resizeFactorY); - waitForViewer(assert, (assessNavigatorResizeAndTakeNextStep(assert, nextStep)); + waitForViewer(assert, assessNavigatorResizeAndTakeNextStep(nextStep)); } }; }; - var assessViewerResizeAndTakeNextStep = function (assert, step) { + var assessViewerResizeAndTakeNextStep = function (step) { return function () { var nextStep = step + 1; if (seadragonProperties.navigatorId) { // Navigator hosted in outside element...size shouldn't change - assessNavigatorSize(assert, navigatorOriginalSize.x, navigatorOriginalSize.y, viewerResizeScenarios[step].assessmentMessage); + assessNavigatorSize( + assert, + navigatorOriginalSize.x, + navigatorOriginalSize.y, + viewerResizeScenarios[step].assessmentMessage + ); } else { // Navigator hosted in viewer if (seadragonProperties.navigatorPosition && seadragonProperties.navigatorPosition == 'ABSOLUTE') { // Navigator positioned 'ABSOLUTE'...size shouldn't change - assessNavigatorSize(assert, navigatorOriginalSize.x, navigatorOriginalSize.y, viewerResizeScenarios[step].assessmentMessage); + + assessNavigatorSize( + assert, + navigatorOriginalSize.x, + navigatorOriginalSize.y, + viewerResizeScenarios[step].assessmentMessage + ); } else { // Navigator positioned 'TOP_LEFT', 'TOP_RIGHT', 'BOTTOM_LEFT', or 'BOTTOM_RIGHT' if (seadragonProperties.navigatorMaintainSizeRatio) { // Navigator should maintain aspect ratio and size proportioned to viewer size - assessNavigatorAspectRatio(assert, viewerElement.width() / viewerElement.height(), 0.0001, viewerResizeScenarios[step].assessmentMessage); - assessNavigatorSize(assert, viewerElement.width() * seadragonProperties.navigatorSizeRatio, viewerElement.height() * seadragonProperties.navigatorSizeRatio, viewerResizeScenarios[step].assessmentMessage); + assessNavigatorAspectRatio( + assert, + viewerElement.width() / viewerElement.height(), + 0.0001, + viewerResizeScenarios[step].assessmentMessage + ); + assessNavigatorSize( + assert, + viewerElement.width() * seadragonProperties.navigatorSizeRatio, + viewerElement.height() * seadragonProperties.navigatorSizeRatio, + viewerResizeScenarios[step].assessmentMessage + ); } else { // Navigator should maintain aspect ratio and area // Variances are loosened up here, since 1 pixel rounding difference in resizing to maintain area // can cause a relatively large difference in area and aspect ratio. - assessNavigatorAspectRatio(assert, viewerElement.width() / viewerElement.height(), 0.1, viewerResizeScenarios[step].assessmentMessage); - assessNavigatorArea(assert, navigatorOriginalSize.x * navigatorOriginalSize.y, viewerResizeScenarios[step].assessmentMessage); + assessNavigatorAspectRatio( + assert, + viewerElement.width() / viewerElement.height(), + 0.1, + viewerResizeScenarios[step].assessmentMessage + ); + assessNavigatorArea( + assert, + navigatorOriginalSize.x * navigatorOriginalSize.y, + viewerResizeScenarios[step].assessmentMessage + ); } } } @@ -417,63 +498,64 @@ if (seadragonProperties.navigatorId) { // Navigator hosted in outside element...run navigator resize tests resizeElement(navigatorElement, navigatorOriginalSize.x * navigatorResizeScenarios[0].resizeFactorX, navigatorOriginalSize.y * navigatorResizeScenarios[0].resizeFactorY); - waitForViewer(assert, (assessNavigatorResizeAndTakeNextStep(assert, 0)); + waitForViewer(assert, assessNavigatorResizeAndTakeNextStep(0)); } else { // Navigator hosted in viewer...skip navigator resize tests - assessAfterResizeNavigator(assert); + assessAfterResizeNavigator(); } } else { resizeElement(viewerElement, viewerOriginalSize.x * viewerResizeScenarios[nextStep].resizeFactorX, viewerOriginalSize.y * viewerResizeScenarios[nextStep].resizeFactorY); - waitForViewer(assert, (assessViewerResizeAndTakeNextStep(assert, (nextStep)); + waitForViewer(assert, assessViewerResizeAndTakeNextStep(nextStep)); } }; }; var captureInitialStateThenAct = function () { assessDisplayRegion(assert, "After image load"); - - testProperties.determineExpectationsAndAssessNavigatorLocation(seadragonProperties, testProperties); - + testProperties.determineExpectationsAndAssessNavigatorLocation(assert, seadragonProperties, testProperties); viewerOriginalSize = new OpenSeadragon.Point(viewerElement.width(), viewerElement.height()); navigatorOriginalSize = new OpenSeadragon.Point(navigatorElement.width(), navigatorElement.height()); resizeElement(viewerElement, viewerOriginalSize.x * viewerResizeScenarios[0].resizeFactorX, viewerOriginalSize.y * viewerResizeScenarios[0].resizeFactorY); - waitForViewer(assert, (assessViewerResizeAndTakeNextStep(assert, (0)); + + waitForViewer(assert, assessViewerResizeAndTakeNextStep(0)); }; var assessAutoFadeTriggered = function () { assert.ok(navigatorElement.parent().css("opacity") < 1, "Expecting navigator to be autofade when in the default location"); - waitForViewer(assert, (captureInitialStateThenAct); + waitForViewer(assert, captureInitialStateThenAct()); }; var assessAutoFadeDisabled = function () { assert.ok(navigatorElement.parent().css("opacity") > 0, "Expecting navigator to be always visible when in a custom location"); - waitForViewer(assert, (captureInitialStateThenAct); + waitForViewer(assert, captureInitialStateThenAct()); }; var openHandler = function () { viewer.removeHandler('open', openHandler); - navigatorElement = $(testProperties.navigatorLocator); + navigatorElement = navigatorElement || $(testProperties.navigatorLocator); viewerElement = $("#" + seadragonProperties.id); + displayRegion = displayRegion || $(testProperties.displayRegionLocator); + //TODO This should be testProperties.testAutoFade, but test hangs. Fix this! if (!testProperties.testAutohide) { - waitForViewer(assert, (captureInitialStateThenAct); + waitForViewer(assert, captureInitialStateThenAct()); } else { assert.ok(navigatorElement.parent().css("opacity") > 0, "Expecting navigator to be visible initially"); var event = { - clientX:1, - clientY:1 + clientX: 1, + clientY: 1 }; viewerElement.simulate('blur', event); if (testProperties.expectedAutoFade) { - setTimeout(assessAutoFadeTriggered,autoFadeWaitTime); + setTimeout(assessAutoFadeTriggered, autoFadeWaitTime); } else { - setTimeout(assessAutoFadeDisabled,autoFadeWaitTime); + setTimeout(assessAutoFadeDisabled, autoFadeWaitTime); } } }; @@ -482,24 +564,31 @@ QUnit.test('DefaultNavigatorLocationWithWideImageTallViewer', function (assert) { assessNavigatorViewerPlacement(assert, { - id:'tallexample', - prefixUrl:'/build/openseadragon/images/', - tileSources:'/test/data/wide.dzi', - showNavigator:true, - navigatorSizeRatio:0.2, - navigatorMaintainSizeRatio: false, - animationTime:0 + id: 'tallexample', + prefixUrl: '/build/openseadragon/images/', + tileSources: '/test/data/wide.dzi', + showNavigator: true, + navigatorSizeRatio: 0.2, + navigatorMaintainSizeRatio: false, + animationTime: 0 }, { - displayRegionLocator:'.navigator .displayregion', - navigatorLocator:'.navigator', + displayRegionLocator: '.navigator .displayregion', + navigatorLocator: '.navigator', testAutoFade: false, - determineExpectationsAndAssessNavigatorLocation:function (seadragonProperties, testProperties) { - var mainViewerElement = $("#" + seadragonProperties.id), - navigatorElement = $(testProperties.navigatorLocator); - assessNavigatorLocation(assert, mainViewerElement.offset().left + mainViewerElement.width() - navigatorElement.width(), - mainViewerElement.offset().top); - assessNavigatorSize(assert, mainViewerElement.width() * seadragonProperties.navigatorSizeRatio, mainViewerElement.height() * seadragonProperties.navigatorSizeRatio); + determineExpectationsAndAssessNavigatorLocation: function (assert, seadragonProperties, testProperties) { + var mainViewerElement = $("#" + seadragonProperties.id); + navigatorElement = navigatorElement || $(testProperties.navigatorLocator); + assessNavigatorLocation( + assert, + mainViewerElement.offset().left + mainViewerElement.width() - navigatorElement.width(), + mainViewerElement.offset().top + ); + assessNavigatorSize( + assert, + mainViewerElement.width() * seadragonProperties.navigatorSizeRatio, + mainViewerElement.height() * seadragonProperties.navigatorSizeRatio + ); assessNavigatorAspectRatio(assert, mainViewerElement.width() / mainViewerElement.height(), 0.0001); } }); @@ -507,24 +596,24 @@ QUnit.test('DefaultNavigatorLocationWithTallImageWideViewer', function (assert) { assessNavigatorViewerPlacement(assert, { - id:'wideexample', - prefixUrl:'/build/openseadragon/images/', - tileSources:'/test/data/tall.dzi', - showNavigator:true, - navigatorSizeRatio:0.2, - navigatorMaintainSizeRatio: false, - animationTime:0, - controlsFadeDelay:0, - controlsFadeLength:1 + id: 'wideexample', + prefixUrl: '/build/openseadragon/images/', + tileSources: '/test/data/tall.dzi', + showNavigator: true, + navigatorSizeRatio: 0.2, + navigatorMaintainSizeRatio: false, + animationTime: 0, + controlsFadeDelay: 0, + controlsFadeLength: 1 }, { - displayRegionLocator:'.navigator .displayregion', - navigatorLocator:'.navigator', + displayRegionLocator: '.navigator .displayregion', + navigatorLocator: '.navigator', testAutoFade: true, expectedAutoFade: true, - determineExpectationsAndAssessNavigatorLocation:function (seadragonProperties, testProperties) { - var mainViewerElement = $("#" + seadragonProperties.id), - navigatorElement = $(testProperties.navigatorLocator); + determineExpectationsAndAssessNavigatorLocation: function (assert, seadragonProperties, testProperties) { + var mainViewerElement = $("#" + seadragonProperties.id); + navigatorElement = navigatorElement || $(testProperties.navigatorLocator); assessNavigatorLocation(assert, mainViewerElement.offset().left + mainViewerElement.width() - navigatorElement.width(), mainViewerElement.offset().top); assessNavigatorSize(assert, mainViewerElement.width() * seadragonProperties.navigatorSizeRatio, mainViewerElement.height() * seadragonProperties.navigatorSizeRatio); @@ -535,26 +624,25 @@ QUnit.test('TopLeftNavigatorLocation', function (assert) { assessNavigatorViewerPlacement(assert, { - id:'example', - prefixUrl:'/build/openseadragon/images/', - tileSources:'/test/data/testpattern.dzi', - showNavigationControl: false, - showNavigator:true, - navigatorSizeRatio:0.2, - navigatorMaintainSizeRatio: false, - navigatorPosition: 'TOP_LEFT', - animationTime:0, - controlsFadeDelay:0, - controlsFadeLength:1 + id: 'example', + prefixUrl: '/build/openseadragon/images/', + tileSources: '/test/data/testpattern.dzi', + showNavigationControl: false, + showNavigator: true, + navigatorSizeRatio: 0.2, + navigatorMaintainSizeRatio: false, + navigatorPosition: 'TOP_LEFT', + animationTime: 0, + controlsFadeDelay: 0, + controlsFadeLength: 1 }, { - displayRegionLocator:'.navigator .displayregion', - navigatorLocator:'.navigator', + displayRegionLocator: '.navigator .displayregion', + navigatorLocator: '.navigator', testAutoFade: true, expectedAutoFade: true, - determineExpectationsAndAssessNavigatorLocation:function (seadragonProperties, testProperties) { - var mainViewerElement = $("#" + seadragonProperties.id), - navigatorElement = $(testProperties.navigatorLocator); + determineExpectationsAndAssessNavigatorLocation: function (assert, seadragonProperties, testProperties) { + var mainViewerElement = $("#" + seadragonProperties.id); assessNavigatorLocation(assert, mainViewerElement.offset().left, mainViewerElement.offset().top); assessNavigatorSize(assert, mainViewerElement.width() * seadragonProperties.navigatorSizeRatio, mainViewerElement.height() * seadragonProperties.navigatorSizeRatio); @@ -565,26 +653,26 @@ QUnit.test('TopRightNavigatorLocation', function (assert) { assessNavigatorViewerPlacement(assert, { - id:'example', - prefixUrl:'/build/openseadragon/images/', - tileSources:'/test/data/testpattern.dzi', - showNavigationControl: false, - showNavigator:true, - navigatorSizeRatio:0.2, - navigatorMaintainSizeRatio: true, + id: 'example', + prefixUrl: '/build/openseadragon/images/', + tileSources: '/test/data/testpattern.dzi', + showNavigationControl: false, + showNavigator: true, + navigatorSizeRatio: 0.2, + navigatorMaintainSizeRatio: true, navigatorPosition: 'TOP_RIGHT', - animationTime:0, - controlsFadeDelay:0, - controlsFadeLength:1 + animationTime: 0, + controlsFadeDelay: 0, + controlsFadeLength: 1 }, { - displayRegionLocator:'.navigator .displayregion', - navigatorLocator:'.navigator', + displayRegionLocator: '.navigator .displayregion', + navigatorLocator: '.navigator', testAutoFade: true, expectedAutoFade: true, - determineExpectationsAndAssessNavigatorLocation:function (seadragonProperties, testProperties) { - var mainViewerElement = $("#" + seadragonProperties.id), - navigatorElement = $(testProperties.navigatorLocator); + determineExpectationsAndAssessNavigatorLocation: function (assert, seadragonProperties, testProperties) { + var mainViewerElement = $("#" + seadragonProperties.id); + navigatorElement = navigatorElement || $(testProperties.navigatorLocator); assessNavigatorLocation(assert, mainViewerElement.offset().left + mainViewerElement.width() - navigatorElement.width(), mainViewerElement.offset().top); assessNavigatorSize(assert, mainViewerElement.width() * seadragonProperties.navigatorSizeRatio, mainViewerElement.height() * seadragonProperties.navigatorSizeRatio); @@ -595,26 +683,26 @@ QUnit.test('BottomLeftNavigatorLocation', function (assert) { assessNavigatorViewerPlacement(assert, { - id:'example', - prefixUrl:'/build/openseadragon/images/', - tileSources:'/test/data/testpattern.dzi', - showNavigationControl: false, - showNavigator:true, - navigatorSizeRatio:0.2, - navigatorMaintainSizeRatio: false, + id: 'example', + prefixUrl: '/build/openseadragon/images/', + tileSources: '/test/data/testpattern.dzi', + showNavigationControl: false, + showNavigator: true, + navigatorSizeRatio: 0.2, + navigatorMaintainSizeRatio: false, navigatorPosition: 'BOTTOM_LEFT', - animationTime:0, - controlsFadeDelay:0, - controlsFadeLength:1 + animationTime: 0, + controlsFadeDelay: 0, + controlsFadeLength: 1 }, { - displayRegionLocator:'.navigator .displayregion', - navigatorLocator:'.navigator', + displayRegionLocator: '.navigator .displayregion', + navigatorLocator: '.navigator', testAutoFade: true, expectedAutoFade: true, - determineExpectationsAndAssessNavigatorLocation:function (seadragonProperties, testProperties) { - var mainViewerElement = $("#" + seadragonProperties.id), - navigatorElement = $(testProperties.navigatorLocator); + determineExpectationsAndAssessNavigatorLocation: function (assert, seadragonProperties, testProperties) { + var mainViewerElement = $("#" + seadragonProperties.id); + navigatorElement = navigatorElement || $(testProperties.navigatorLocator); assessNavigatorLocation(assert, mainViewerElement.offset().left, mainViewerElement.offset().top + mainViewerElement.height() - navigatorElement.height()); assessNavigatorSize(assert, mainViewerElement.width() * seadragonProperties.navigatorSizeRatio, mainViewerElement.height() * seadragonProperties.navigatorSizeRatio); @@ -625,26 +713,26 @@ QUnit.test('BottomRightNavigatorLocation', function (assert) { assessNavigatorViewerPlacement(assert, { - id:'example', - prefixUrl:'/build/openseadragon/images/', - tileSources:'/test/data/testpattern.dzi', - showNavigationControl: false, - showNavigator:true, - navigatorSizeRatio:0.2, - navigatorMaintainSizeRatio: false, - navigatorPosition: 'BOTTOM_RIGHT', - animationTime:0, - controlsFadeDelay:0, - controlsFadeLength:1 + id: 'example', + prefixUrl: '/build/openseadragon/images/', + tileSources: '/test/data/testpattern.dzi', + showNavigationControl: false, + showNavigator: true, + navigatorSizeRatio: 0.2, + navigatorMaintainSizeRatio: false, + navigatorPosition: 'BOTTOM_RIGHT', + animationTime: 0, + controlsFadeDelay: 0, + controlsFadeLength: 1 }, { - displayRegionLocator:'.navigator .displayregion', - navigatorLocator:'.navigator', + displayRegionLocator: '.navigator .displayregion', + navigatorLocator: '.navigator', testAutoFade: true, expectedAutoFade: true, - determineExpectationsAndAssessNavigatorLocation:function (seadragonProperties, testProperties) { - var mainViewerElement = $("#" + seadragonProperties.id), - navigatorElement = $(testProperties.navigatorLocator); + determineExpectationsAndAssessNavigatorLocation: function (assert, seadragonProperties, testProperties) { + var mainViewerElement = $("#" + seadragonProperties.id); + navigatorElement = navigatorElement || $(testProperties.navigatorLocator); assessNavigatorLocation(assert, mainViewerElement.offset().left + mainViewerElement.width() - navigatorElement.width(), mainViewerElement.offset().top + mainViewerElement.height() - navigatorElement.height()); assessNavigatorSize(assert, mainViewerElement.width() * seadragonProperties.navigatorSizeRatio, mainViewerElement.height() * seadragonProperties.navigatorSizeRatio); @@ -655,28 +743,27 @@ QUnit.test('AbsoluteNavigatorLocation', function (assert) { assessNavigatorViewerPlacement(assert, { - id:'example', - prefixUrl:'/build/openseadragon/images/', - tileSources:'/test/data/testpattern.dzi', - showNavigationControl: false, - showNavigator:true, - navigatorPosition: 'ABSOLUTE', - navigatorTop: 10, - navigatorLeft: 10, - navigatorHeight: 150, - navigatorWidth: 175, - animationTime:0, - controlsFadeDelay:0, - controlsFadeLength:1 + id: 'example', + prefixUrl: '/build/openseadragon/images/', + tileSources: '/test/data/testpattern.dzi', + showNavigationControl: false, + showNavigator: true, + navigatorPosition: 'ABSOLUTE', + navigatorTop: 10, + navigatorLeft: 10, + navigatorHeight: 150, + navigatorWidth: 175, + animationTime: 0, + controlsFadeDelay: 0, + controlsFadeLength: 1 }, { - displayRegionLocator:'.navigator .displayregion', - navigatorLocator:'.navigator', + displayRegionLocator: '.navigator .displayregion', + navigatorLocator: '.navigator', testAutoFade: true, expectedAutoFade: true, - determineExpectationsAndAssessNavigatorLocation:function (seadragonProperties, testProperties) { - var mainViewerElement = $("#" + seadragonProperties.id), - navigatorElement = $(testProperties.navigatorLocator); + determineExpectationsAndAssessNavigatorLocation: function (assert, seadragonProperties, testProperties) { + var mainViewerElement = $("#" + seadragonProperties.id); assessNavigatorLocation(assert, mainViewerElement.offset().left + seadragonProperties.navigatorLeft, mainViewerElement.offset().top + seadragonProperties.navigatorTop); assessNavigatorSize(assert, seadragonProperties.navigatorWidth, seadragonProperties.navigatorHeight); @@ -686,18 +773,18 @@ QUnit.test('CustomNavigatorElementWithWideImageWideViewer', function (assert) { assessNavigatorViewerPlacement(assert, { - id:'wideexample', - navigatorId:'exampleNavigator', - prefixUrl:'/build/openseadragon/images/', - tileSources:'/test/data/wide.dzi', - showNavigator:true, - animationTime:0 + id: 'wideexample', + navigatorId: 'exampleNavigator', + prefixUrl: '/build/openseadragon/images/', + tileSources: '/test/data/wide.dzi', + showNavigator: true, + animationTime: 0 }, { - displayRegionLocator:'#exampleNavigator .displayregion', - navigatorLocator:'#exampleNavigator', + displayRegionLocator: '#exampleNavigator .displayregion', + navigatorLocator: '#exampleNavigator', testAutoFade: false, - determineExpectationsAndAssessNavigatorLocation:function (seadragonProperties, testProperties) { + determineExpectationsAndAssessNavigatorLocation: function (assert, seadragonProperties, testProperties) { var mainViewerElement = $("#" + seadragonProperties.id), navigatorViewerElement = $("#" + seadragonProperties.navigatorId); assessNavigatorLocation(assert, mainViewerElement.offset().left, @@ -708,7 +795,7 @@ QUnit.test('CustomDialogNavigatorElementWithTallImageTallViewer', function (assert) { $('#exampleNavigator').dialog({ width: 150, - height:100, + height: 100, open: function (event, ui) { $('#exampleNavigator').width(150); $('#exampleNavigator').height(100); @@ -722,24 +809,24 @@ //} }); assessNavigatorViewerPlacement(assert, { - id:'tallexample', - navigatorId:'exampleNavigator', - prefixUrl:'/build/openseadragon/images/', - tileSources:'/test/data/tall.dzi', - showNavigator:true, - animationTime:0, - controlsFadeDelay:0, - controlsFadeLength:1 + id: 'tallexample', + navigatorId: 'exampleNavigator', + prefixUrl: '/build/openseadragon/images/', + tileSources: '/test/data/tall.dzi', + showNavigator: true, + animationTime: 0, + controlsFadeDelay: 0, + controlsFadeLength: 1 }, { - displayRegionLocator:'#exampleNavigator .displayregion', - navigatorLocator:'#exampleNavigator', + displayRegionLocator: '#exampleNavigator .displayregion', + navigatorLocator: '#exampleNavigator', testAutoFade: true, expectedAutoFade: false, //On Firefox at some screen size/resolution/magnification combinations, there is an issue with the //simulated click. This property is a work around for that problem topNavigatorClickAdjustment: 15, - determineExpectationsAndAssessNavigatorLocation:function (seadragonProperties, testProperties) { + determineExpectationsAndAssessNavigatorLocation: function (assert, seadragonProperties, testProperties) { var jqueryDialog = $(testProperties.navigatorLocator); assessNavigatorLocation(assert, jqueryDialog.offset().left, jqueryDialog.offset().top); @@ -749,8 +836,7 @@ }); QUnit.test('Viewer closing one image and opening another', function(assert) { - var done = assert.async(); - var timeWatcher = Util.timeWatcher(); + var timeWatcher = Util.timeWatcher(assert); viewer = OpenSeadragon({ id: 'example', @@ -760,10 +846,30 @@ showNavigator: true }); - var openHandler1 = function(event) { - viewer.removeHandler('open', openHandler1); - assert.ok(viewer.navigator, 'navigator exists'); - viewer.navigator.world.addHandler('add-item', navOpenHandler1); + var closeHandler1 = function(event) { + viewer.removeHandler('close', closeHandler1); + assert.ok(true, 'calling open closes the old one'); + assert.equal(viewer.navigator.source, null, 'navigator source has been cleared'); + }; + + var closeHandler2 = function(event) { + viewer.removeHandler('close', closeHandler2); + setTimeout(function() { + assert.ok(!viewer.navigator._updateRequestId, 'navigator timer is off'); + timeWatcher.done(); + }, 100); + }; + + var navOpenHandler2 = function(event) { + viewer.navigator.world.removeHandler('add-item', navOpenHandler2); + assert.equal(viewer.navigator.source, viewer.source, 'viewer and navigator have the same source'); + viewer.addHandler('close', closeHandler2); + viewer.close(); + }; + + var openHandler2 = function(event) { + viewer.removeHandler('open', openHandler2); + viewer.navigator.world.addHandler('add-item', navOpenHandler2); }; var navOpenHandler1 = function(event) { @@ -775,30 +881,10 @@ viewer.open('/test/data/tall.dzi'); }; - var closeHandler1 = function(event) { - viewer.removeHandler('close', closeHandler1); - assert.ok(true, 'calling open closes the old one'); - assert.equal(viewer.navigator.source, null, 'navigator source has been cleared'); - }; - - var openHandler2 = function(event) { - viewer.removeHandler('open', openHandler2); - viewer.navigator.world.addHandler('add-item', navOpenHandler2); - }; - - var navOpenHandler2 = function(event) { - viewer.navigator.world.removeHandler('add-item', navOpenHandler2); - assert.equal(viewer.navigator.source, viewer.source, 'viewer and navigator have the same source'); - viewer.addHandler('close', closeHandler2); - viewer.close(); - }; - - var closeHandler2 = function(event) { - viewer.removeHandler('close', closeHandler2); - setTimeout(function() { - assert.ok(!viewer.navigator._updateRequestId, 'navigator timer is off'); - timeWatcher.done(); - }, 100); + var openHandler1 = function(event) { + viewer.removeHandler('open', openHandler1); + assert.ok(viewer.navigator, 'navigator exists'); + viewer.navigator.world.addHandler('add-item', navOpenHandler1); }; viewer.addHandler('open', openHandler1); @@ -816,13 +902,6 @@ collectionMode: true }); - var openHandler = function() { - viewer.removeHandler('open', openHandler); - viewer.navigator.world.addHandler('add-item', navOpenHandler); - // The navigator may already have added the items. - navOpenHandler(); - }; - var navOpenHandler = function(event) { if (viewer.navigator.world.getItemCount() === 2) { viewer.navigator.world.removeHandler('add-item', navOpenHandler); @@ -830,13 +909,13 @@ setTimeout(function() { // Test initial formation for (var i = 0; i < 2; i++) { - propEqual(viewer.navigator.world.getItemAt(i).getBounds(), + assert.propEqual(viewer.navigator.world.getItemAt(i).getBounds(), viewer.world.getItemAt(i).getBounds(), 'bounds are the same'); } // Try moving one viewer.world.getItemAt(0).setPosition(new OpenSeadragon.Point(-200, -200)); - propEqual(viewer.navigator.world.getItemAt(0).getBounds(), + assert.propEqual(viewer.navigator.world.getItemAt(0).getBounds(), viewer.world.getItemAt(0).getBounds(), 'bounds are the same after move'); done(); @@ -844,6 +923,13 @@ } }; + var openHandler = function() { + viewer.removeHandler('open', openHandler); + viewer.navigator.world.addHandler('add-item', navOpenHandler); + // The navigator may already have added the items. + navOpenHandler(); + }; + viewer.addHandler('open', openHandler); }); @@ -930,7 +1016,7 @@ }); QUnit.test('Viewer options transmitted to navigator', function(assert) { - var done = assert.async();a + var done = assert.async(); viewer = OpenSeadragon({ id: 'example', prefixUrl: '/build/openseadragon/images/', @@ -943,11 +1029,9 @@ viewer.addHandler('open', function openHandler() { viewer.removeHandler('open', openHandler); - var navigator = viewer.navigator; - - assert.equal(navigator.prefixUrl, viewer.prefixUrl, + assert.equal(viewer.navigator.prefixUrl, viewer.prefixUrl, "Prefix URL should be transmitted to the navigator."); - assert.equal(navigator.crossOriginPolicy, viewer.crossOriginPolicy, + assert.equal(viewer.navigator.crossOriginPolicy, viewer.crossOriginPolicy, "Cross origin policy should be transmitted to the navigator."); done(); }); @@ -967,13 +1051,11 @@ viewer.addHandler('open', function openHandler() { viewer.removeHandler('open', openHandler); - var navigator = viewer.navigator; - - assert.equal(navigator.viewport.getRotation(), 45, + assert.equal(viewer.navigator.viewport.getRotation(), 45, "Rotation set in constructor should be applied to navigator by default."); viewer.viewport.setRotation(90); - assert.equal(navigator.viewport.getRotation(), 90, + assert.equal(viewer.navigator.viewport.getRotation(), 90, "Rotation set by setRotation should be applied to navigator by default."); done(); @@ -994,13 +1076,11 @@ viewer.addHandler('open', function openHandler() { viewer.removeHandler('open', openHandler); - var navigator = viewer.navigator; - - assert.equal(navigator.viewport.getRotation(), 0, + assert.equal(viewer.navigator.viewport.getRotation(), 0, "Rotation set in constructor should not be applied to navigator when navigatorRotate is false."); viewer.viewport.setRotation(90); - assert.equal(navigator.viewport.getRotation(), 0, + assert.equal(viewer.navigator.viewport.getRotation(), 0, "Rotation set by setRotation should not be applied to navigator when navigatorRotate is false."); done(); diff --git a/test/test.html b/test/test.html index a165ffd6..786af542 100644 --- a/test/test.html +++ b/test/test.html @@ -45,7 +45,7 @@ + so we put them last. --> +