mirror of
https://github.com/openseadragon/openseadragon.git
synced 2024-11-22 13:16:10 +03:00
0ede8992de
This makes it more clear what we're testing for or calling methods on, vs. assigning to this.buttons in both the useGroup true and false cases.
391 lines
16 KiB
JavaScript
391 lines
16 KiB
JavaScript
/* global QUnit, $, testLog */
|
|
|
|
(function () {
|
|
var viewer;
|
|
|
|
QUnit.module('Controls', {
|
|
beforeEach: function () {
|
|
$('<div id="controlsTests"></div>')
|
|
.css({
|
|
width: 1000,
|
|
height: 1000
|
|
})
|
|
.appendTo("#qunit-fixture");
|
|
|
|
testLog.reset();
|
|
|
|
},
|
|
afterEach: function () {
|
|
if (viewer && viewer.close) {
|
|
viewer.close();
|
|
}
|
|
|
|
viewer = null;
|
|
}
|
|
});
|
|
|
|
QUnit.test('ZoomControlOff', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function () {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(!viewer.showZoomControl, 'showZoomControl should be off');
|
|
assert.ok(!viewer.zoomInButton, "zoomIn button should be null");
|
|
assert.ok(!viewer.zoomOutButton, "zoomOut button should be null");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showZoomControl: false
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
viewer.open('/test/data/testpattern.dzi');
|
|
});
|
|
|
|
QUnit.test('ZoomControlOn', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function () {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(viewer.showZoomControl, 'showZoomControl should be on');
|
|
assert.ok(!!viewer.zoomInButton, "zoomIn button should not be null");
|
|
assert.ok(!!viewer.zoomOutButton, "zoomOut button should not be null");
|
|
assert.notEqual(viewer.buttonGroup.buttons.indexOf(viewer.zoomInButton), -1,
|
|
"The zoomIn button should be present");
|
|
assert.notEqual(viewer.buttonGroup.buttons.indexOf(viewer.zoomOutButton), -1,
|
|
"The zoomOut button should be present");
|
|
|
|
var oldZoom = viewer.viewport.getZoom();
|
|
viewer.zoomInButton.onClick();
|
|
var newZoom = viewer.viewport.getZoom();
|
|
assert.ok(oldZoom < newZoom, "OSD should have zoomed in.");
|
|
oldZoom = newZoom;
|
|
viewer.zoomOutButton.onClick();
|
|
newZoom = viewer.viewport.getZoom();
|
|
assert.ok(oldZoom > newZoom, "OSD should have zoomed out.");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showZoomControl: true
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
viewer.open('/test/data/testpattern.dzi');
|
|
});
|
|
|
|
QUnit.test('HomeControlOff', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function () {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(!viewer.showHomeControl, 'showHomeControl should be off');
|
|
assert.ok(!viewer.homeButton, "Home button should be null");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showHomeControl: false
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
viewer.open('/test/data/testpattern.dzi');
|
|
});
|
|
|
|
QUnit.test('HomeControlOn', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function () {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(viewer.showHomeControl, 'showHomeControl should be on');
|
|
assert.ok(!!viewer.homeButton, "Home button should not be null");
|
|
assert.notEqual(viewer.buttonGroup.buttons.indexOf(viewer.homeButton), -1,
|
|
"The home button should be present");
|
|
|
|
viewer.viewport.zoomBy(1.1);
|
|
var bounds = viewer.viewport.getBounds();
|
|
var homeBounds = viewer.viewport.getHomeBounds();
|
|
assert.ok(bounds.x !== homeBounds.x ||
|
|
bounds.y !== homeBounds.y ||
|
|
bounds.width !== homeBounds.width ||
|
|
bounds.height !== homeBounds.height,
|
|
"OSD should not be at home.");
|
|
viewer.homeButton.onRelease();
|
|
bounds = viewer.viewport.getBounds();
|
|
assert.ok(bounds.x === homeBounds.x &&
|
|
bounds.y === homeBounds.y &&
|
|
bounds.width === homeBounds.width &&
|
|
bounds.height === homeBounds.height, "OSD should have get home.");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showHomeControl: true
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
viewer.open('/test/data/testpattern.dzi');
|
|
});
|
|
|
|
QUnit.test('FullPageControlOff', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function () {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(!viewer.showFullPageControl, 'showFullPageControl should be off');
|
|
assert.ok(!viewer.fullPageButton, "FullPage button should be null");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showFullPageControl: false
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
viewer.open('/test/data/testpattern.dzi');
|
|
});
|
|
|
|
QUnit.test('FullPageControlOn', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function () {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(viewer.showHomeControl, 'showFullPageControl should be on');
|
|
assert.ok(!!viewer.fullPageButton, "FullPage button should not be null");
|
|
assert.notEqual(viewer.buttonGroup.buttons.indexOf(viewer.fullPageButton), -1,
|
|
"The full page button should be present");
|
|
|
|
assert.ok(!viewer.isFullPage(), "OSD should not be in full page.");
|
|
viewer.fullPageButton.onRelease();
|
|
assert.ok(viewer.isFullPage(), "OSD should be in full page.");
|
|
viewer.fullPageButton.onRelease();
|
|
assert.ok(!viewer.isFullPage(), "OSD should not be in full page.");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showHomeControl: true
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
viewer.open('/test/data/testpattern.dzi');
|
|
});
|
|
|
|
QUnit.test('RotateControlOff', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function (event) {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(true, 'Open event was sent');
|
|
assert.ok(viewer.drawer, 'Drawer exists');
|
|
assert.ok(viewer.drawer.canRotate(), 'drawer.canRotate needs to be true');
|
|
assert.ok(!viewer.showRotationControl, 'showRotationControl should be off');
|
|
assert.ok(!viewer.rotateLeftButton, "rotateLeft button should be null");
|
|
assert.ok(!viewer.rotateRightButton, "rotateRight button should be null");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showRotationControl: false
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
viewer.open('/test/data/testpattern.dzi');
|
|
});
|
|
|
|
QUnit.test('RotateControlOn', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function (event) {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(true, 'Open event was sent');
|
|
assert.ok(viewer.drawer, 'Drawer exists');
|
|
assert.ok(viewer.drawer.canRotate(), 'drawer.canRotate needs to be true');
|
|
assert.ok(viewer.showRotationControl, 'showRotationControl should be true');
|
|
assert.notEqual(viewer.buttonGroup.buttons.indexOf(viewer.rotateLeftButton), -1,
|
|
"rotateLeft should be found");
|
|
assert.notEqual(viewer.buttonGroup.buttons.indexOf(viewer.rotateRightButton), -1,
|
|
"rotateRight should be found");
|
|
|
|
// Now simulate the left/right button clicks.
|
|
// TODO: re-factor simulateViewerClickWithDrag so it'll accept any element, and use that.
|
|
assert.equal(viewer.viewport.degrees, 0, "Image should start at 0 degrees rotation");
|
|
viewer.rotateLeftButton.onRelease();
|
|
assert.equal(viewer.viewport.degrees, 270, "Image should be 270 degrees rotation (left)");
|
|
viewer.rotateRightButton.onRelease();
|
|
assert.equal(viewer.viewport.degrees, 0, "Image should be 270 degrees rotation (right)");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showRotationControl: true
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
viewer.open('/test/data/testpattern.dzi');
|
|
});
|
|
|
|
QUnit.test('SequenceControlOff', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function () {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(!viewer.showSequenceControl, 'showSequenceControl should be off');
|
|
assert.ok(!viewer.previousButton, "Previous button should be null");
|
|
assert.ok(!viewer.nextButton, "Next button should be null");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
tileSources: [
|
|
'/test/data/testpattern.dzi',
|
|
'/test/data/testpattern.dzi',
|
|
'/test/data/testpattern.dzi'
|
|
],
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showSequenceControl: false
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
});
|
|
|
|
QUnit.test('SequenceControlOnPrevNextWrapOff', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function () {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(viewer.showSequenceControl, 'showSequenceControl should be on');
|
|
assert.ok(!!viewer.previousButton, "Previous button should not be null");
|
|
assert.ok(!!viewer.nextButton, "Next button should not be null");
|
|
assert.notEqual(viewer.paging.buttons.indexOf(viewer.previousButton), -1,
|
|
"The previous button should be present");
|
|
assert.notEqual(viewer.paging.buttons.indexOf(viewer.nextButton), -1,
|
|
"The next button should be present");
|
|
|
|
assert.equal(viewer.currentPage(), 0, "OSD should open on first page.");
|
|
assert.ok(viewer.previousButton.element.disabled,
|
|
"Previous should be disabled on first page.");
|
|
assert.ok(!viewer.nextButton.element.disabled,
|
|
"Next should be enabled on first page.");
|
|
|
|
viewer.nextButton.onRelease();
|
|
assert.equal(viewer.currentPage(), 1, "OSD should be on second page.");
|
|
assert.ok(!viewer.previousButton.element.disabled,
|
|
"Previous should be enabled on second page.");
|
|
assert.ok(!viewer.nextButton.element.disabled,
|
|
"Next should be enabled on second page.");
|
|
|
|
viewer.nextButton.onRelease();
|
|
assert.equal(viewer.currentPage(), 2, "OSD should be on third page.");
|
|
assert.ok(!viewer.previousButton.element.disabled,
|
|
"Previous should be enabled on third page.");
|
|
assert.ok(viewer.nextButton.element.disabled,
|
|
"Next should be disabled on third page.");
|
|
|
|
viewer.previousButton.onRelease();
|
|
assert.equal(viewer.currentPage(), 1, "OSD should be on second page.");
|
|
assert.ok(!viewer.previousButton.element.disabled,
|
|
"Previous should be enabled on second page.");
|
|
assert.ok(!viewer.nextButton.element.disabled,
|
|
"Next should be enabled on second page.");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
tileSources: [
|
|
'/test/data/testpattern.dzi',
|
|
'/test/data/testpattern.dzi',
|
|
'/test/data/testpattern.dzi'
|
|
],
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showSequenceControl: true,
|
|
sequenceMode: true,
|
|
navPrevNextWrap: false
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
});
|
|
|
|
QUnit.test('SequenceControlOnPrevNextWrapOn', function (assert) {
|
|
var done = assert.async();
|
|
var openHandler = function () {
|
|
viewer.removeHandler('open', openHandler);
|
|
assert.ok(viewer.showSequenceControl, 'showSequenceControl should be on');
|
|
assert.ok(!!viewer.previousButton, "Previous button should not be null");
|
|
assert.ok(!!viewer.nextButton, "Next button should not be null");
|
|
assert.notEqual(viewer.paging.buttons.indexOf(viewer.previousButton), -1,
|
|
"The previous button should be present");
|
|
assert.notEqual(viewer.paging.buttons.indexOf(viewer.nextButton), -1,
|
|
"The next button should be present");
|
|
|
|
assert.equal(viewer.currentPage(), 0, "OSD should open on first page.");
|
|
assert.ok(!viewer.previousButton.element.disabled,
|
|
"Previous should be enabled on first page.");
|
|
assert.ok(!viewer.nextButton.element.disabled,
|
|
"Next should be enabled on first page.");
|
|
|
|
viewer.previousButton.onRelease();
|
|
assert.equal(viewer.currentPage(), 2, "OSD should be on third page.");
|
|
assert.ok(!viewer.previousButton.element.disabled,
|
|
"Previous should be enabled on third page.");
|
|
assert.ok(!viewer.nextButton.element.disabled,
|
|
"Next should be enabled on third page.");
|
|
|
|
viewer.nextButton.onRelease();
|
|
assert.equal(viewer.currentPage(), 0, "OSD should be on first page.");
|
|
assert.ok(!viewer.previousButton.element.disabled,
|
|
"Previous should be enabled on first page.");
|
|
assert.ok(!viewer.nextButton.element.disabled,
|
|
"Next should be enabled on first page.");
|
|
|
|
viewer.close();
|
|
done();
|
|
};
|
|
|
|
viewer = OpenSeadragon({
|
|
id: 'controlsTests',
|
|
prefixUrl: '/build/openseadragon/images/',
|
|
tileSources: [
|
|
'/test/data/testpattern.dzi',
|
|
'/test/data/testpattern.dzi',
|
|
'/test/data/testpattern.dzi'
|
|
],
|
|
springStiffness: 100, // Faster animation = faster tests
|
|
showSequenceControl: true,
|
|
sequenceMode: true,
|
|
navPrevNextWrap: true
|
|
});
|
|
viewer.addHandler('open', openHandler);
|
|
});
|
|
|
|
})();
|