623 lines
22 KiB
JavaScript
623 lines
22 KiB
JavaScript
import IIIFInfo, {Versions} from '../../../../../src/ol/format/IIIFInfo.js';
|
|
|
|
describe('ol.format.IIIFInfo', function () {
|
|
const iiifInfo = new IIIFInfo();
|
|
|
|
describe('setImageInfo', function () {
|
|
it('can handle image info JSON as object or as string serialization', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
});
|
|
expect(iiifInfo.getImageApiVersion()).to.be(Versions.VERSION3);
|
|
|
|
iiifInfo.setImageInfo(
|
|
'{"@context": "http://iiif.io/api/image/2/context.json","@id":"http://iiif.test/id"}'
|
|
);
|
|
expect(iiifInfo.getImageApiVersion()).to.be(Versions.VERSION2);
|
|
});
|
|
});
|
|
|
|
describe('getImageApiVersion', function () {
|
|
it('provides the correct Image API version', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@id': 'http://iiif.test/id',
|
|
});
|
|
expect(function () {
|
|
iiifInfo.getImageApiVersion();
|
|
}).to.throwException();
|
|
|
|
iiifInfo.setImageInfo({
|
|
identifier: 'http://iiif.test/id',
|
|
profile: 'this is no valid profile',
|
|
});
|
|
expect(function () {
|
|
iiifInfo.getImageApiVersion();
|
|
}).to.throwException();
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'this is no valid context',
|
|
'@id': 'http://iiif.test/id',
|
|
});
|
|
expect(function () {
|
|
iiifInfo.getImageApiVersion();
|
|
}).to.throwException();
|
|
|
|
iiifInfo.setImageInfo({
|
|
identifier: 'http://iiif.test/id',
|
|
profile:
|
|
'http://library.stanford.edu/iiif/image-api/compliance.html#level0',
|
|
});
|
|
expect(iiifInfo.getImageApiVersion()).to.be(Versions.VERSION1);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context':
|
|
'http://library.stanford.edu/iiif/image-api/1.1/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
});
|
|
expect(iiifInfo.getImageApiVersion()).to.be(Versions.VERSION1);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/1/context.json',
|
|
identifier: 'http://iiif.test/id',
|
|
});
|
|
expect(iiifInfo.getImageApiVersion()).to.be(Versions.VERSION1);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
});
|
|
expect(iiifInfo.getImageApiVersion()).to.be(Versions.VERSION2);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
id: 'http://iiif.test/id',
|
|
});
|
|
expect(iiifInfo.getImageApiVersion()).to.be(Versions.VERSION3);
|
|
});
|
|
});
|
|
|
|
describe('getComplianceLevelFromProfile', function () {
|
|
it('detects the correct compliance level', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
profile: 'level0',
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be(undefined);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
profile: 'http://iiif.io/api/image/level3.json',
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be(undefined);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
profile: 'level1',
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be(undefined);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
profile: 'http://iiif.io/api/image/2/level2.json',
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be('level2');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
profile: ['http://iiif.io/api/image/2/level1.json'],
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be('level1');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
profile: 'level4',
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be(undefined);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
profile: 'http://iiif.io/api/image/3/level3.json',
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be(undefined);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
profile: 'http://iiif.io/api/image/2/level1.json',
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be(undefined);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
profile: 'level2',
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be('level2');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
profile: 'http://iiif.io/api/image/3/level1.json',
|
|
});
|
|
expect(iiifInfo.getComplianceLevelFromProfile()).to.be('level1');
|
|
});
|
|
});
|
|
|
|
describe('getComplianceLevelSupportedFeatures', function () {
|
|
it('provides the correct features for given versions and compliance levels', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@context':
|
|
'http://library.stanford.edu/iiif/image-api/1.1/context.json',
|
|
profile:
|
|
'http://library.stanford.edu/iiif/image-api/compliance.html#level0',
|
|
});
|
|
let level = iiifInfo.getComplianceLevelSupportedFeatures();
|
|
expect(level.supports).to.be.empty();
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context':
|
|
'http://library.stanford.edu/iiif/image-api/1.1/context.json',
|
|
profile:
|
|
'http://library.stanford.edu/iiif/image-api/compliance.html#level1',
|
|
});
|
|
level = iiifInfo.getComplianceLevelSupportedFeatures();
|
|
expect(level.supports).to.have.length(4);
|
|
expect(level.supports).to.contain('regionByPx');
|
|
expect(level.supports).to.contain('sizeByW');
|
|
expect(level.supports).to.contain('sizeByH');
|
|
expect(level.supports).to.contain('sizeByPct');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context':
|
|
'http://library.stanford.edu/iiif/image-api/1.1/context.json',
|
|
profile:
|
|
'http://library.stanford.edu/iiif/image-api/compliance.html#level2',
|
|
});
|
|
level = iiifInfo.getComplianceLevelSupportedFeatures();
|
|
expect(level.supports).to.have.length(7);
|
|
expect(level.supports).to.contain('regionByPx');
|
|
expect(level.supports).to.contain('regionByPct');
|
|
expect(level.supports).to.contain('sizeByW');
|
|
expect(level.supports).to.contain('sizeByH');
|
|
expect(level.supports).to.contain('sizeByPct');
|
|
expect(level.supports).to.contain('sizeByConfinedWh');
|
|
expect(level.supports).to.contain('sizeByWh');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
profile: 'http://iiif.io/api/image/2/level0.json',
|
|
});
|
|
level = iiifInfo.getComplianceLevelSupportedFeatures();
|
|
expect(level.supports).to.be.empty();
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
profile: 'http://iiif.io/api/image/2/level1.json',
|
|
});
|
|
level = iiifInfo.getComplianceLevelSupportedFeatures();
|
|
expect(level.supports).to.have.length(4);
|
|
expect(level.supports).to.contain('regionByPx');
|
|
expect(level.supports).to.contain('sizeByW');
|
|
expect(level.supports).to.contain('sizeByH');
|
|
expect(level.supports).to.contain('sizeByPct');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
profile: 'http://iiif.io/api/image/2/level2.json',
|
|
});
|
|
level = iiifInfo.getComplianceLevelSupportedFeatures();
|
|
expect(level.supports).to.have.length(8);
|
|
expect(level.supports).to.contain('regionByPx');
|
|
expect(level.supports).to.contain('regionByPct');
|
|
expect(level.supports).to.contain('sizeByW');
|
|
expect(level.supports).to.contain('sizeByH');
|
|
expect(level.supports).to.contain('sizeByPct');
|
|
expect(level.supports).to.contain('sizeByConfinedWh');
|
|
expect(level.supports).to.contain('sizeByDistortedWh');
|
|
expect(level.supports).to.contain('sizeByWh');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
profile: 'level0',
|
|
});
|
|
level = iiifInfo.getComplianceLevelSupportedFeatures();
|
|
expect(level.supports).to.be.empty();
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
profile: 'level1',
|
|
});
|
|
level = iiifInfo.getComplianceLevelSupportedFeatures();
|
|
expect(level.supports).to.have.length(5);
|
|
expect(level.supports).to.contain('regionByPx');
|
|
expect(level.supports).to.contain('regionSquare');
|
|
expect(level.supports).to.contain('sizeByW');
|
|
expect(level.supports).to.contain('sizeByH');
|
|
expect(level.supports).to.contain('sizeByWh');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
profile: 'level2',
|
|
});
|
|
level = iiifInfo.getComplianceLevelSupportedFeatures();
|
|
expect(level.supports).to.have.length(8);
|
|
expect(level.supports).to.contain('regionByPx');
|
|
expect(level.supports).to.contain('regionByPct');
|
|
expect(level.supports).to.contain('regionSquare');
|
|
expect(level.supports).to.contain('sizeByW');
|
|
expect(level.supports).to.contain('sizeByH');
|
|
expect(level.supports).to.contain('sizeByWh');
|
|
expect(level.supports).to.contain('sizeByConfinedWh');
|
|
expect(level.supports).to.contain('sizeByPct');
|
|
});
|
|
});
|
|
|
|
describe('getTileSourceOptions', function () {
|
|
it('produces options from minimal information responses', function () {
|
|
expect(function () {
|
|
iiifInfo.setImageInfo({
|
|
width: 2000,
|
|
height: 1500,
|
|
});
|
|
iiifInfo.getTileSourceOptions();
|
|
}).to.throwException();
|
|
|
|
iiifInfo.setImageInfo({
|
|
identifier: 'id',
|
|
profile:
|
|
'http://library.stanford.edu/iiif/image-api/compliance.html#level0',
|
|
});
|
|
let options = iiifInfo.getTileSourceOptions();
|
|
|
|
expect(options).to.be.an('object');
|
|
expect(options).to.have.property('version', Versions.VERSION1);
|
|
|
|
iiifInfo.setImageInfo({
|
|
identifier: 'identifier-version-1.0',
|
|
width: 2000,
|
|
height: 1500,
|
|
profile:
|
|
'http://library.stanford.edu/iiif/image-api/compliance.html#level0',
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
|
|
expect(options).to.not.be(undefined);
|
|
expect(options).to.not.be(null);
|
|
expect(options).to.have.property('version', Versions.VERSION1);
|
|
expect(options).to.have.property('size');
|
|
expect(options.size).to.be.an('array');
|
|
expect(options.size.length).to.be(2);
|
|
expect(options.size[0]).to.be(2000);
|
|
expect(options.size[1]).to.be(1500);
|
|
expect(options.quality).to.be('native');
|
|
expect(options.url).to.be(undefined);
|
|
expect(options.sizes).to.be(undefined);
|
|
expect(options.tileSize).to.be(undefined);
|
|
expect(options.format).to.be('jpg');
|
|
expect(options.supports).to.be.empty();
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
'@id': 'http://iiif.test/version2/id',
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
|
|
expect(options).to.be.an('object');
|
|
expect(options).to.have.property('version', Versions.VERSION2);
|
|
expect(options).to.have.property('url', 'http://iiif.test/version2/id');
|
|
expect(options).to.have.property('format', 'jpg');
|
|
});
|
|
|
|
it('uses preferred options if applicable', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
'@id': 'http://iiif.test/version2/id',
|
|
width: 2000,
|
|
height: 1500,
|
|
profile: ['http://iiif.io/api/image/2/level2.json'],
|
|
});
|
|
let options = iiifInfo.getTileSourceOptions({
|
|
quality: 'bitonal',
|
|
format: 'png',
|
|
});
|
|
expect(options).to.have.property('quality', 'bitonal');
|
|
expect(options).to.have.property('format', 'png');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
'@id': 'http://iiif.test/version3/id',
|
|
width: 2000,
|
|
height: 1500,
|
|
profile: 'level2',
|
|
extraQualities: ['gray', 'bitonal'],
|
|
});
|
|
options = iiifInfo.getTileSourceOptions({
|
|
quality: 'bitonal',
|
|
format: 'png',
|
|
});
|
|
expect(options).to.have.property('quality', 'bitonal');
|
|
expect(options).to.have.property('format', 'png');
|
|
});
|
|
|
|
it('ignores preferred options that are not supported', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
'@id': 'http://iiif.test/version2/id',
|
|
width: 2000,
|
|
height: 1500,
|
|
profile: ['http://iiif.io/api/image/2/level1.json'],
|
|
});
|
|
let options = iiifInfo.getTileSourceOptions({
|
|
quality: 'bitonal',
|
|
format: 'png',
|
|
});
|
|
expect(options).to.have.property('quality', 'default');
|
|
expect(options).to.have.property('format', 'jpg');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
'@id': 'http://iiif.test/version3/id',
|
|
width: 2000,
|
|
height: 1500,
|
|
profile: 'level1',
|
|
});
|
|
options = iiifInfo.getTileSourceOptions({
|
|
quality: 'bitonal',
|
|
format: 'png',
|
|
});
|
|
expect(options).to.have.property('quality', 'default');
|
|
expect(options).to.have.property('format', 'jpg');
|
|
});
|
|
|
|
it('combines supported features indicated by compliance level and explicitly stated in image info', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
profile: [
|
|
'http://iiif.io/api/image/2/level1.json',
|
|
{
|
|
supports: ['regionByPct', 'sizeByWh'],
|
|
},
|
|
],
|
|
});
|
|
|
|
let options = iiifInfo.getTileSourceOptions();
|
|
expect(options.supports).to.contain('regionByPct');
|
|
expect(options.supports).to.contain('sizeByWh');
|
|
expect(options.supports).to.contain('regionByPx');
|
|
expect(options.supports).to.contain('sizeByW');
|
|
expect(options.supports).to.contain('sizeByH');
|
|
expect(options.supports).to.contain('sizeByPct');
|
|
expect(options.supports).to.have.length(6);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
id: 'http://iiif.test/id',
|
|
profile: 'level1',
|
|
extraFeatures: ['regionByPct', 'sizeByPct'],
|
|
});
|
|
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.supports).to.contain('regionByPct');
|
|
expect(options.supports).to.contain('sizeByPct');
|
|
expect(options.supports).to.contain('regionByPx');
|
|
expect(options.supports).to.contain('regionSquare');
|
|
expect(options.supports).to.contain('sizeByW');
|
|
expect(options.supports).to.contain('sizeByH');
|
|
expect(options.supports).to.contain('sizeByWh');
|
|
expect(options.supports).to.have.length(7);
|
|
});
|
|
|
|
it('uses the first available scale factors and tile sizes', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@context':
|
|
'http://library.stanford.edu/iiif/image-api/1.1/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
profile:
|
|
'http://library.stanford.edu/iiif/image-api/compliance.html#level0',
|
|
});
|
|
let options = iiifInfo.getTileSourceOptions();
|
|
expect(options.resolutions).to.be(undefined);
|
|
expect(options.tileSize).to.be(undefined);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context':
|
|
'http://library.stanford.edu/iiif/image-api/1.1/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
profile:
|
|
'http://library.stanford.edu/iiif/image-api/compliance.html#level0',
|
|
scale_factors: [1, 2, 4],
|
|
tile_width: 512,
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.resolutions).to.have.length(3);
|
|
expect(options.resolutions).to.contain(1);
|
|
expect(options.resolutions).to.contain(2);
|
|
expect(options.resolutions).to.contain(4);
|
|
expect(options.tileSize).to.have.length(2);
|
|
expect(options.tileSize[0]).to.be(512);
|
|
expect(options.tileSize[1]).to.be(512);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context':
|
|
'http://library.stanford.edu/iiif/image-api/1.1/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
profile:
|
|
'http://library.stanford.edu/iiif/image-api/compliance.html#level0',
|
|
scale_factors: [1, 2, 4],
|
|
tile_width: 512,
|
|
tile_height: 1024,
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.resolutions).to.have.length(3);
|
|
expect(options.resolutions).to.contain(1);
|
|
expect(options.resolutions).to.contain(2);
|
|
expect(options.resolutions).to.contain(4);
|
|
expect(options.tileSize).to.have.length(2);
|
|
expect(options.tileSize[0]).to.be(512);
|
|
expect(options.tileSize[1]).to.be(1024);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
profile: 'http://iiif.io/api/image/2/level0.json',
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.resolutions).to.be(undefined);
|
|
expect(options.tileSize).to.be(undefined);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
profile: 'http://iiif.io/api/image/2/level0.json',
|
|
tiles: [
|
|
{
|
|
scaleFactors: [1, 2, 4],
|
|
width: 512,
|
|
},
|
|
{
|
|
scaleFactors: [1, 2, 4, 8, 16],
|
|
width: 256,
|
|
},
|
|
],
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.resolutions).to.have.length(3);
|
|
expect(options.resolutions).to.contain(1);
|
|
expect(options.resolutions).to.contain(2);
|
|
expect(options.resolutions).to.contain(4);
|
|
expect(options.tileSize).to.have.length(2);
|
|
expect(options.tileSize[0]).to.be(512);
|
|
expect(options.tileSize[1]).to.be(512);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
profile: 'http://iiif.io/api/image/2/level0.json',
|
|
tiles: [
|
|
{
|
|
scaleFactors: [1, 2, 4],
|
|
width: 512,
|
|
height: 1024,
|
|
},
|
|
],
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.resolutions).to.have.length(3);
|
|
expect(options.resolutions).to.contain(1);
|
|
expect(options.resolutions).to.contain(2);
|
|
expect(options.resolutions).to.contain(4);
|
|
expect(options.tileSize).to.have.length(2);
|
|
expect(options.tileSize[0]).to.be(512);
|
|
expect(options.tileSize[1]).to.be(1024);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
profile: 'level0',
|
|
tiles: [
|
|
{
|
|
scaleFactors: [1, 2, 4, 8],
|
|
width: 512,
|
|
height: 256,
|
|
},
|
|
],
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.resolutions).to.have.length(4);
|
|
expect(options.resolutions).to.contain(1);
|
|
expect(options.resolutions).to.contain(2);
|
|
expect(options.resolutions).to.contain(4);
|
|
expect(options.resolutions).to.contain(8);
|
|
expect(options.tileSize).to.have.length(2);
|
|
expect(options.tileSize[0]).to.be(512);
|
|
expect(options.tileSize[1]).to.be(256);
|
|
});
|
|
});
|
|
|
|
it('provides each given size in sizes as OpenLayers Size', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/2/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
'sizes': [
|
|
{
|
|
width: 2000,
|
|
height: 1000,
|
|
},
|
|
{
|
|
width: 1000,
|
|
height: 500,
|
|
},
|
|
{
|
|
width: 500,
|
|
height: 250,
|
|
},
|
|
],
|
|
});
|
|
let options = iiifInfo.getTileSourceOptions();
|
|
expect(options.sizes).to.have.length(3);
|
|
expect(options.sizes[0]).to.have.length(2);
|
|
expect(options.sizes[0][0]).to.be(2000);
|
|
expect(options.sizes[0][1]).to.be(1000);
|
|
expect(options.sizes[1]).to.have.length(2);
|
|
expect(options.sizes[1][0]).to.be(1000);
|
|
expect(options.sizes[1][1]).to.be(500);
|
|
expect(options.sizes[2]).to.have.length(2);
|
|
expect(options.sizes[2][0]).to.be(500);
|
|
expect(options.sizes[2][1]).to.be(250);
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
'@id': 'http://iiif.test/id',
|
|
'sizes': [
|
|
{
|
|
width: 1500,
|
|
height: 800,
|
|
},
|
|
],
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.sizes).to.have.length(1);
|
|
expect(options.sizes[0]).to.have.length(2);
|
|
expect(options.sizes[0][0]).to.be(1500);
|
|
expect(options.sizes[0][1]).to.be(800);
|
|
});
|
|
|
|
it('respects the preferred image formats', function () {
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
'id': 'http://iiif.test/id',
|
|
'profile': 'level0',
|
|
'preferredFormats': ['png', 'gif'],
|
|
});
|
|
let options = iiifInfo.getTileSourceOptions();
|
|
expect(options.format).to.be('jpg');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
'id': 'http://iiif.test/id',
|
|
'profile': 'level1',
|
|
'preferredFormats': ['png', 'gif'],
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.format).to.be('jpg');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
'id': 'http://iiif.test/id',
|
|
'profile': 'level1',
|
|
'extraFormats': ['webp', 'gif'],
|
|
'preferredFormats': ['webp', 'png', 'gif'],
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.format).to.be('gif');
|
|
|
|
iiifInfo.setImageInfo({
|
|
'@context': 'http://iiif.io/api/image/3/context.json',
|
|
'id': 'http://iiif.test/id',
|
|
'profile': 'level2',
|
|
'preferredFormats': ['png', 'gif'],
|
|
});
|
|
options = iiifInfo.getTileSourceOptions();
|
|
expect(options.format).to.be('png');
|
|
});
|
|
});
|