DSDSWeb/static/js/Cesium-1.53/Specs/Core/arrayRemoveDuplicatesSpec.js

168 lines
6.9 KiB
JavaScript
Raw Normal View History

2024-07-11 18:02:47 +08:00
defineSuite([
'Core/arrayRemoveDuplicates',
'Core/Cartesian3',
'Core/Math',
'Core/Spherical'
], function(
arrayRemoveDuplicates,
Cartesian3,
CesiumMath,
Spherical) {
'use strict';
it('removeDuplicates returns positions if none removed', function() {
var positions = [Cartesian3.ZERO];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon);
expect(noDuplicates).toBe(positions);
});
it('removeDuplicates returns positions if none removed', function() {
var positions = [Cartesian3.ZERO, Cartesian3.UNIT_X, Cartesian3.UNIT_Y, Cartesian3.UNIT_Z];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon);
expect(noDuplicates).toBe(positions);
});
it('removeDuplicates wrapping returns positions if none removed', function() {
var positions = [Cartesian3.ZERO, Cartesian3.UNIT_X, Cartesian3.UNIT_Y, Cartesian3.UNIT_Z];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon, true);
expect(noDuplicates).toBe(positions);
});
it('removeDuplicates to remove duplicates', function() {
var positions = [
new Cartesian3(1.0, 1.0, 1.0),
new Cartesian3(1.0, 1.0, 1.0),
new Cartesian3(1.0, 1.0, 1.0),
new Cartesian3(1.0, 1.0, 1.0),
new Cartesian3(2.0, 2.0, 2.0),
new Cartesian3(3.0, 3.0, 3.0),
new Cartesian3(3.0, 3.0, 3.0)];
var expectedPositions = [
new Cartesian3(1.0, 1.0, 1.0),
new Cartesian3(2.0, 2.0, 2.0),
new Cartesian3(3.0, 3.0, 3.0)];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon);
expect(noDuplicates).toEqual(expectedPositions);
});
it('removeDuplicates to remove duplicates with anonymous types', function() {
var positions = [
{x:1.0, y:1.0, z:1.0},
{x:1.0, y:1.0, z:1.0},
{x:1.0, y:1.0, z:1.0},
{x:1.0, y:1.0, z:1.0},
{x:2.0, y:2.0, z:2.0},
{x:3.0, y:3.0, z:3.0},
{x:3.0, y:3.0, z:3.0}];
var expectedPositions = [
{x:1.0, y:1.0, z:1.0},
{x:2.0, y:2.0, z:2.0},
{x:3.0, y:3.0, z:3.0}];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon);
expect(noDuplicates).toEqual(expectedPositions);
});
it('removeDuplicates to remove duplicates with Spherical type', function() {
var positions = [
new Spherical(1.0, 1.0, 1.0),
new Spherical(1.0, 1.0, 1.0),
new Spherical(1.0, 1.0, 1.0),
new Spherical(1.0, 1.0, 1.0),
new Spherical(2.0, 2.0, 1.0),
new Spherical(3.0, 3.0, 1.0),
new Spherical(3.0, 3.0, 2.0)];
var expectedPositions = [
new Spherical(1.0, 1.0, 1.0),
new Spherical(2.0, 2.0, 1.0),
new Spherical(3.0, 3.0, 1.0),
new Spherical(3.0, 3.0, 2.0)];
var noDuplicates = arrayRemoveDuplicates(positions, Spherical.equalsEpsilon);
expect(noDuplicates).toEqual(expectedPositions);
});
it('removeDuplicates works with empty array', function() {
var positions = [];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon);
expect(noDuplicates).toEqual(positions);
});
it('removeDuplicates to remove positions within absolute epsilon 10', function() {
var positions = [
new Cartesian3(1.0, 1.0, 1.0),
new Cartesian3(1.0, 2.0, 3.0),
new Cartesian3(1.0, 2.0, 3.0 + CesiumMath.EPSILON10)];
var expectedPositions = [
new Cartesian3(1.0, 1.0, 1.0),
new Cartesian3(1.0, 2.0, 3.0)];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon);
expect(noDuplicates).toEqual(expectedPositions);
});
it('removeDuplicates to remove positions within relative epsilon 10', function() {
var positions = [
new Cartesian3(0.0, 0.0, 1000000.0),
new Cartesian3(0.0, 0.0, 3000000.0),
new Cartesian3(0.0, 0.0, 3000000.0002)];
var expectedPositions = [
new Cartesian3(0.0, 0.0, 1000000.0),
new Cartesian3(0.0, 0.0, 3000000.0)];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon);
expect(noDuplicates).toEqual(expectedPositions);
});
it('removeDuplicates keeps positions that add up past relative epsilon 10', function() {
var eightyPercentOfEpsilon = 0.8 * CesiumMath.EPSILON10;
var positions = [
new Cartesian3(0.0, 0.0, 1.0),
new Cartesian3(0.0, 0.0, 1.0 + eightyPercentOfEpsilon),
new Cartesian3(0.0, 0.0, 1.0 + (2 * eightyPercentOfEpsilon)),
new Cartesian3(0.0, 0.0, 1.0 + (3 * eightyPercentOfEpsilon))];
var expectedPositions = [
new Cartesian3(0.0, 0.0, 1.0),
new Cartesian3(0.0, 0.0, 1.0 + (2 * eightyPercentOfEpsilon))];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon);
expect(noDuplicates).toEqual(expectedPositions);
});
it('removeDuplicates returns undefined', function() {
var noDuplicates = arrayRemoveDuplicates(undefined, Cartesian3.equalsEpsilon);
expect(noDuplicates).toBe(undefined);
});
it('removeDuplicates wrapping removes duplicate first and last points', function() {
var positions = [
new Cartesian3(1.0, 1.0, 1.0),
new Cartesian3(2.0, 2.0, 2.0),
new Cartesian3(3.0, 3.0, 3.0),
new Cartesian3(1.0, 1.0, 1.0)];
var expectedPositions = [
new Cartesian3(2.0, 2.0, 2.0),
new Cartesian3(3.0, 3.0, 3.0),
new Cartesian3(1.0, 1.0, 1.0)];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon, true);
expect(noDuplicates).toEqual(expectedPositions);
});
it('removeDuplicates wrapping removes duplicate including first and last points', function() {
var positions = [
new Cartesian3(1.0, 1.0, 1.0),
new Cartesian3(2.0, 2.0, 2.0),
new Cartesian3(2.0, 2.0, 2.0),
new Cartesian3(3.0, 3.0, 3.0),
new Cartesian3(1.0, 1.0, 1.0)];
var expectedPositions = [
new Cartesian3(2.0, 2.0, 2.0),
new Cartesian3(3.0, 3.0, 3.0),
new Cartesian3(1.0, 1.0, 1.0)];
var noDuplicates = arrayRemoveDuplicates(positions, Cartesian3.equalsEpsilon, true);
expect(noDuplicates).toEqual(expectedPositions);
});
});