111 lines
3.6 KiB
JavaScript
111 lines
3.6 KiB
JavaScript
/**
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the License is distributed on an
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
* KIND, either express or implied. See the License for the
|
|
* specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
import { max } from 'd3-array';
|
|
import { getAggFunc, getBounds } from '../../../../../src/visualizations/deckgl/layers/common';
|
|
|
|
describe('deckgl layers common', () => {
|
|
it('getAggFunc', () => {
|
|
const arr = [10, 0.5, 55, 128, -10];
|
|
expect(getAggFunc('max')(arr)).toEqual(128);
|
|
expect(getAggFunc('min')(arr)).toEqual(-10);
|
|
expect(getAggFunc('count')(arr)).toEqual(5);
|
|
expect(getAggFunc('median')(arr)).toEqual(10);
|
|
expect(getAggFunc('mean')(arr)).toEqual(36.7);
|
|
expect(getAggFunc('p1')(arr)).toEqual(-9.58);
|
|
expect(getAggFunc('p5')(arr)).toEqual(-7.9);
|
|
expect(getAggFunc('p95')(arr)).toEqual(113.39999999999998);
|
|
expect(getAggFunc('p99')(arr)).toEqual(125.08);
|
|
});
|
|
it('getAggFunc with accessor', () => {
|
|
const arr = [{ foo: 1 }, { foo: 2 }, { foo: 3 }];
|
|
const accessor = o => o.foo;
|
|
expect(getAggFunc('count')(arr, accessor)).toEqual(3);
|
|
expect(max(arr, accessor)).toEqual(3);
|
|
expect(getAggFunc('max', accessor)(arr)).toEqual(3);
|
|
expect(getAggFunc('min', accessor)(arr)).toEqual(1);
|
|
expect(getAggFunc('median', accessor)(arr)).toEqual(2);
|
|
expect(getAggFunc('mean', accessor)(arr)).toEqual(2);
|
|
expect(getAggFunc('p1', accessor)(arr)).toEqual(1.02);
|
|
expect(getAggFunc('p5', accessor)(arr)).toEqual(1.1);
|
|
expect(getAggFunc('p95', accessor)(arr)).toEqual(2.9);
|
|
expect(getAggFunc('p99', accessor)(arr)).toEqual(2.98);
|
|
});
|
|
|
|
describe('getBounds', () => {
|
|
it('should return valid bounds for multiple points', () => {
|
|
const points = [
|
|
[0, 20],
|
|
[5, 25],
|
|
[10, 15],
|
|
];
|
|
expect(getBounds(points)).toEqual([
|
|
[0, 15],
|
|
[10, 25],
|
|
]);
|
|
});
|
|
it('should return valid bounds for single latitude point', () => {
|
|
const points = [
|
|
[0, 0],
|
|
[5, 0],
|
|
];
|
|
expect(getBounds(points)).toEqual([
|
|
[0, -0.25],
|
|
[5, 0.25],
|
|
]);
|
|
});
|
|
it('should return valid bounds for single longitude point', () => {
|
|
const points = [
|
|
[0, 0],
|
|
[0, 5],
|
|
];
|
|
expect(getBounds(points)).toEqual([
|
|
[-0.25, 0],
|
|
[0.25, 5],
|
|
]);
|
|
});
|
|
it('should return valid bounds for single point', () => {
|
|
const points = [
|
|
[0, 0],
|
|
];
|
|
expect(getBounds(points)).toEqual([
|
|
[-0.25, -0.25],
|
|
[0.25, 0.25],
|
|
]);
|
|
});
|
|
it('should return valid bounds for point 90, 180', () => {
|
|
const points = [
|
|
[180, 90],
|
|
];
|
|
expect(getBounds(points)).toEqual([
|
|
[179.75, 89.75],
|
|
[180, 90],
|
|
]);
|
|
});
|
|
it('should return valid bounds for point -90, -180', () => {
|
|
const points = [
|
|
[-180, -90],
|
|
];
|
|
expect(getBounds(points)).toEqual([
|
|
[-180, -90],
|
|
[-179.75, -89.75],
|
|
]);
|
|
});
|
|
});
|
|
});
|