Files
openlayers/test/browser/spec/ol/source/GeoTIFF.test.js

161 lines
4.7 KiB
JavaScript

import GeoTIFFSource from '../../../../../src/ol/source/GeoTIFF.js';
import TileState from '../../../../../src/ol/TileState.js';
describe('ol/source/GeoTIFF', function () {
describe('constructor', function () {
it('configures readMethod_ to read rasters', function () {
const source = new GeoTIFFSource({
sources: [
{
url: 'spec/ol/source/images/0-0-0.tif',
},
],
});
expect(source.readMethod_).to.be('readRasters');
});
it('configures readMethod_ to read RGB', function () {
const source = new GeoTIFFSource({
convertToRGB: true,
sources: [
{
url: 'spec/ol/source/images/0-0-0.tif',
},
],
});
expect(source.readMethod_).to.be('readRGB');
});
it('defaults to wrapX: false', function () {
const source = new GeoTIFFSource({
sources: [
{
url: 'spec/ol/source/images/0-0-0.tif',
},
],
});
expect(source.getWrapX()).to.be(false);
});
it('allows wrapX to be set', function () {
const source = new GeoTIFFSource({
wrapX: true,
sources: [
{
url: 'spec/ol/source/images/0-0-0.tif',
},
],
});
expect(source.getWrapX()).to.be(true);
});
it('generates Float32Array data if normalize is set to false', (done) => {
const source = new GeoTIFFSource({
normalize: false,
sources: [{url: 'spec/ol/source/images/0-0-0.tif'}],
});
source.on('change', () => {
const tile = source.getTile(0, 0, 0);
source.on('tileloadend', () => {
expect(tile.getState()).to.be(TileState.LOADED);
expect(tile.getData()).to.be.a(Float32Array);
done();
});
tile.load();
});
});
it('generates Uint8Array data if normalize is not set to false', (done) => {
const source = new GeoTIFFSource({
sources: [{url: 'spec/ol/source/images/0-0-0.tif'}],
});
source.on('change', () => {
const tile = source.getTile(0, 0, 0);
source.on('tileloadend', () => {
expect(tile.getState()).to.be(TileState.LOADED);
expect(tile.getData()).to.be.a(Uint8Array);
done();
});
tile.load();
});
});
it('loads from blob', (done) => {
fetch('spec/ol/source/images/0-0-0.tif')
.then((response) => response.blob())
.then((blob) => {
const source = new GeoTIFFSource({
sources: [{blob: blob}],
});
source.on('change', () => {
const tile = source.getTile(0, 0, 0);
source.on('tileloadend', () => {
expect(tile.getState()).to.be(TileState.LOADED);
expect(tile.getData()).to.be.a(Uint8Array);
done();
});
tile.load();
});
});
});
});
describe('loading', function () {
/** @type {GeoTIFFSource} */
let source;
beforeEach(function () {
source = new GeoTIFFSource({
sources: [
{
url: 'spec/ol/source/images/0-0-0.tif',
},
],
});
});
it('manages load states', function (done) {
expect(source.getState()).to.be('loading');
source.on('change', () => {
expect(source.getState()).to.be('ready');
done();
});
});
it('configures itself from source metadata', function (done) {
source.on('change', () => {
expect(source.addAlpha_).to.be(true);
expect(source.bandCount).to.be(4);
expect(source.nodataValues_).to.eql([[0]]);
expect(source.getTileGrid().getResolutions().length).to.be(1);
expect(source.projection.getCode()).to.be('EPSG:4326');
expect(source.projection.getUnits()).to.be('degrees');
done();
});
});
it('resolves view properties', function (done) {
source.getView().then((viewOptions) => {
const projection = viewOptions.projection;
expect(projection.getCode()).to.be('EPSG:4326');
expect(projection.getUnits()).to.be('degrees');
expect(viewOptions.extent).to.eql([-180, -90, 180, 90]);
expect(viewOptions.center).to.eql([0, 0]);
expect(viewOptions.resolutions).to.eql([1.40625, 0.703125]);
expect(viewOptions.showFullExtent).to.be(true);
done();
});
});
it('loads tiles', function (done) {
source.on('change', () => {
const tile = source.getTile(0, 0, 0);
source.on('tileloadend', () => {
expect(tile.getState()).to.be(TileState.LOADED);
done();
});
tile.load();
});
});
});
});