maplibre-gl
Version:
BSD licensed community fork of mapbox-gl, a WebGL interactive maps library
84 lines (69 loc) • 2.81 kB
text/typescript
import expect from 'expect';
import EdgeInsets from '../geo/edge_insets';
describe('EdgeInsets', () => {
describe('#constructor', () => {
test('creates an object with default values', () => {
expect(new EdgeInsets() instanceof EdgeInsets).toBeTruthy();
});
test('invalid initialization', () => {
expect(() => {
new EdgeInsets(NaN, 10);
}).toThrow('Invalid value for edge-insets, top, bottom, left and right must all be numbers');
expect(() => {
new EdgeInsets(-10, 10, 20, 10);
}).toThrow('Invalid value for edge-insets, top, bottom, left and right must all be numbers');
});
test('valid initialization', () => {
const top = 10;
const bottom = 15;
const left = 26;
const right = 19;
const inset = new EdgeInsets(top, bottom, left, right);
expect(inset.top).toBe(top);
expect(inset.bottom).toBe(bottom);
expect(inset.left).toBe(left);
expect(inset.right).toBe(right);
});
});
describe('#getCenter', () => {
test('valid input', () => {
const inset = new EdgeInsets(10, 15, 50, 10);
const center = inset.getCenter(600, 400);
expect(center.x).toBe(320);
expect(center.y).toBe(197.5);
});
test('center clamping', () => {
const inset = new EdgeInsets(300, 200, 500, 200);
const center = inset.getCenter(600, 400);
// Midpoint of the overlap when padding overlaps
expect(center.x).toBe(450);
expect(center.y).toBe(250);
});
});
describe('#interpolate', () => {
test('it works', () => {
const inset1 = new EdgeInsets(10, 15, 50, 10);
const inset2 = new EdgeInsets(20, 30, 100, 10);
const inset3 = inset1.interpolate(inset1, inset2, 0.5);
// inset1 is mutated in-place
expect(inset3).toBe(inset1);
expect(inset3.top).toBe(15);
expect(inset3.bottom).toBe(22.5);
expect(inset3.left).toBe(75);
expect(inset3.right).toBe(10);
});
});
test('#equals', () => {
const inset1 = new EdgeInsets(10, 15, 50, 10);
const inset2 = new EdgeInsets(10, 15, 50, 10);
const inset3 = new EdgeInsets(10, 15, 50, 11);
expect(inset1.equals(inset2)).toBeTruthy();
expect(inset2.equals(inset3)).toBeFalsy();
});
test('#clone', () => {
const inset1 = new EdgeInsets(10, 15, 50, 10);
const inset2 = inset1.clone();
expect(inset2 === inset1).toBeFalsy();
expect(inset1.equals(inset2)).toBeTruthy();
});
});