Files
openlayers/test/spec/ol/graticule.test.js
Tim Schaub 054af09032 Make code prettier
This updates ESLint and our shared eslint-config-openlayers to use Prettier.  Most formatting changes were automatically applied with this:

    npm run lint -- --fix

A few manual changes were required:

 * In `examples/offscreen-canvas.js`, the `//eslint-disable-line` comment needed to be moved to the appropriate line to disable the error about the `'worker-loader!./offscreen-canvas.worker.js'` import.
 * In `examples/webpack/exapmle-builder.js`, spaces could not be added after a couple `function`s for some reason.  While editing this, I reworked `ExampleBuilder` to be a class.
 * In `src/ol/format/WMSGetFeatureInfo.js`, the `// @ts-ignore` comment needed to be moved down one line so it applied to the `parsersNS` argument.
2020-04-06 12:54:09 -06:00

250 lines
8.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import Feature from '../../../src/ol/Feature.js';
import Graticule from '../../../src/ol/layer/Graticule.js';
import Map from '../../../src/ol/Map.js';
import Stroke from '../../../src/ol/style/Stroke.js';
import Text from '../../../src/ol/style/Text.js';
import {fromLonLat, get as getProjection} from '../../../src/ol/proj.js';
describe('ol.layer.Graticule', function () {
let graticule;
function createGraticule() {
graticule = new Graticule();
new Map({
layers: [graticule],
});
}
describe('#createGraticule', function () {
it('creates a graticule without labels', function () {
createGraticule();
const extent = [
-25614353.926475704,
-7827151.696402049,
25614353.926475704,
7827151.696402049,
];
const projection = getProjection('EPSG:3857');
const resolution = 39135.75848201024;
const squaredTolerance = (resolution * resolution) / 4.0;
graticule.updateProjectionInfo_(projection);
graticule.createGraticule_(extent, [0, 0], resolution, squaredTolerance);
expect(graticule.getMeridians().length).to.be(13);
expect(graticule.getParallels().length).to.be(3);
expect(graticule.meridiansLabels_).to.be(null);
expect(graticule.parallelsLabels_).to.be(null);
});
it('creates a graticule with normal world labels', function () {
const feature = new Feature();
graticule = new Graticule({
showLabels: true,
wrapX: false,
});
new Map({
layers: [graticule],
});
const extent = [
-25614353.926475704,
-7827151.696402049,
25614353.926475704,
7827151.696402049,
];
const projection = getProjection('EPSG:3857');
const resolution = 39135.75848201024;
graticule.loaderFunction(extent, resolution, projection);
const event = {
context: document.createElement('canvas').getContext('2d'),
inversePixelTransform: [1, 0, 0, 1, 0, 0],
frameState: {
coordinateToPixelTransform: [1, 0, 0, 1, 0, 0],
extent: extent,
pixelRatio: 1,
viewState: {
projection: projection,
resolution: resolution,
rotation: 0,
},
},
};
graticule.drawLabels_(event);
expect(graticule.meridiansLabels_.length).to.be(13);
expect(graticule.meridiansLabels_[0].text).to.be('0° 00 00″');
expect(
graticule.meridiansLabels_[0].geom.getCoordinates()[0]
).to.roughlyEqual(0, 1e-9);
expect(graticule.parallelsLabels_.length).to.be(3);
expect(graticule.parallelsLabels_[0].text).to.be('0° 00 00″');
expect(
graticule.parallelsLabels_[0].geom.getCoordinates()[1]
).to.roughlyEqual(0, 1e-9);
feature.set('graticule_label', graticule.meridiansLabels_[0].text);
expect(graticule.lonLabelStyle_(feature).getText().getText()).to.be(
'0° 00 00″'
);
feature.set('graticule_label', graticule.parallelsLabels_[0].text);
expect(graticule.latLabelStyle_(feature).getText().getText()).to.be(
'0° 00 00″'
);
});
it('creates a graticule with wrapped world labels', function () {
const feature = new Feature();
graticule = new Graticule({
showLabels: true,
});
new Map({
layers: [graticule],
});
const extent = [
-25614353.926475704,
-7827151.696402049,
25614353.926475704,
7827151.696402049,
];
const projection = getProjection('EPSG:3857');
const resolution = 39135.75848201024;
graticule.loaderFunction(extent, resolution, projection);
const event = {
context: document.createElement('canvas').getContext('2d'),
inversePixelTransform: [1, 0, 0, 1, 0, 0],
frameState: {
coordinateToPixelTransform: [1, 0, 0, 1, 0, 0],
extent: extent,
pixelRatio: 1,
viewState: {
projection: projection,
resolution: resolution,
rotation: 0,
},
},
};
graticule.drawLabels_(event);
expect(graticule.meridiansLabels_.length).to.be(13);
expect(graticule.meridiansLabels_[0].text).to.be('0° 00 00″');
const coordinates = fromLonLat([360, 0]);
expect(
graticule.meridiansLabels_[0].geom.getCoordinates()[0]
).to.roughlyEqual(coordinates[0], 1e-9);
expect(graticule.parallelsLabels_.length).to.be(3);
expect(graticule.parallelsLabels_[0].text).to.be('0° 00 00″');
expect(
graticule.parallelsLabels_[0].geom.getCoordinates()[1]
).to.roughlyEqual(0, 1e-9);
feature.set('graticule_label', graticule.meridiansLabels_[0].text);
expect(graticule.lonLabelStyle_(feature).getText().getText()).to.be(
'0° 00 00″'
);
feature.set('graticule_label', graticule.parallelsLabels_[0].text);
expect(graticule.latLabelStyle_(feature).getText().getText()).to.be(
'0° 00 00″'
);
});
it('has a default stroke style', function () {
createGraticule();
const actualStyle = graticule.strokeStyle_;
expect(actualStyle).not.to.be(undefined);
expect(actualStyle instanceof Stroke).to.be(true);
});
it('can be configured with a stroke style', function () {
createGraticule();
const customStrokeStyle = new Stroke({
color: 'rebeccapurple',
});
const styledGraticule = new Graticule({
map: new Map({}),
strokeStyle: customStrokeStyle,
});
const actualStyle = styledGraticule.strokeStyle_;
expect(actualStyle).not.to.be(undefined);
expect(actualStyle).to.be(customStrokeStyle);
});
it('can be configured with label options', function () {
const latLabelStyle = new Text();
const lonLabelStyle = new Text();
const feature = new Feature();
graticule = new Graticule({
map: new Map({}),
showLabels: true,
lonLabelFormatter: function (lon) {
return 'lon: ' + lon.toString();
},
latLabelFormatter: function (lat) {
return 'lat: ' + lat.toString();
},
lonLabelPosition: 0.9,
latLabelPosition: 0.1,
lonLabelStyle: lonLabelStyle,
latLabelStyle: latLabelStyle,
});
const extent = [
-25614353.926475704,
-7827151.696402049,
25614353.926475704,
7827151.696402049,
];
const projection = getProjection('EPSG:3857');
const resolution = 39135.75848201024;
const squaredTolerance = (resolution * resolution) / 4.0;
graticule.updateProjectionInfo_(projection);
graticule.createGraticule_(extent, [0, 0], resolution, squaredTolerance);
expect(graticule.meridiansLabels_[0].text).to.be('lon: 0');
expect(graticule.parallelsLabels_[0].text).to.be('lat: 0');
expect(graticule.lonLabelStyle_(feature).getText()).to.eql(lonLabelStyle);
expect(graticule.latLabelStyle_(feature).getText()).to.eql(latLabelStyle);
feature.set('graticule_label', graticule.meridiansLabels_[0].text);
expect(graticule.lonLabelStyle_(feature).getText().getText()).to.be(
'lon: 0'
);
feature.set('graticule_label', graticule.parallelsLabels_[0].text);
expect(graticule.latLabelStyle_(feature).getText().getText()).to.be(
'lat: 0'
);
expect(graticule.lonLabelPosition_).to.be(0.9);
expect(graticule.latLabelPosition_).to.be(0.1);
});
it('can be configured with interval limits', function () {
graticule = new Graticule({
showLabels: true,
lonLabelFormatter: function (lon) {
return lon.toString();
},
latLabelFormatter: function (lat) {
return lat.toString();
},
intervals: [10],
});
new Map({
layers: [graticule],
});
const extent = [
-25614353.926475704,
-7827151.696402049,
25614353.926475704,
7827151.696402049,
];
const projection = getProjection('EPSG:3857');
const resolution = 4891.96981025128;
const squaredTolerance = (resolution * resolution) / 4.0;
graticule.updateProjectionInfo_(projection);
graticule.createGraticule_(extent, [0, 0], resolution, squaredTolerance);
expect(graticule.meridiansLabels_[0].text).to.be('0');
expect(graticule.parallelsLabels_[0].text).to.be('0');
expect(graticule.meridiansLabels_[1].text).to.be('-10');
expect(graticule.parallelsLabels_[1].text).to.be('-10');
expect(graticule.meridiansLabels_[2].text).to.be('-20');
expect(graticule.parallelsLabels_[2].text).to.be('-20');
expect(graticule.getMeridians().length).to.be(37);
expect(graticule.getParallels().length).to.be(11);
});
});
});