WebWorldWind/test/util/PolygonSplitter.test.js
Patrick Hogan 09c81f862e Update
2018-06-21 19:03:59 -07:00

101 lines
4.8 KiB
JavaScript

/*
* Copyright 2003-2006, 2009, 2017, United States Government, as represented by the Administrator of the
* National Aeronautics and Space Administration. All rights reserved.
*
* The NASAWorldWind/WebWorldWind platform is licensed 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.
*/
define([
'src/util/PolygonSplitter',
'./PolygonSplitterData.test'
],
function (PolygonSplitter,
PolygonSplitterData) {
'use strict';
describe('spilt polygons', function () {
it('split a square like polygon', function () {
var inputContours = PolygonSplitterData.simpleSquareInput;
var expectedResult = PolygonSplitterData.simpleSquareOutput;
var result = [];
var doesCross = PolygonSplitter.splitContours(inputContours, result);
expect(expectedResult).toEqual(result);
expect(doesCross).toEqual(true);
});
it('split a spiral like polygon', function () {
var inputContours = PolygonSplitterData.spiralPolyInput;
var expectedResult = PolygonSplitterData.spiralPolyOutput;
var result = [];
var doesCross = PolygonSplitter.splitContours(inputContours, result);
expect(expectedResult).toEqual(result);
expect(doesCross).toEqual(true);
});
it('split a polygon over the globe ending in a concave polygon', function () {
var inputContours = PolygonSplitterData.polygonOverTheGlobeInput;
var expectedResult = PolygonSplitterData.polygonOverTheGlobeOutput;
var result = [];
var doesCross = PolygonSplitter.splitContours(inputContours, result);
expect(expectedResult).toEqual(result);
expect(doesCross).toEqual(true);
});
it('splits a polygon that contains the south pole and intersects the anti-meridian', function(){
var inputContours = PolygonSplitterData.polygonSouthPoleAndIntersectionInput;
var expectedResult = PolygonSplitterData.polygonSouthPoleAndIntersectionOutput;
var result = [];
var doesCross = PolygonSplitter.splitContours(inputContours, result);
expect(expectedResult).toEqual(result);
expect(doesCross).toEqual(true);
});
it('splits a polygon that contains the north pole and intersects the anti-meridian', function(){
var inputContours = PolygonSplitterData.polygonNorthPoleAndIntersectionInput;
var expectedResult = PolygonSplitterData.polygonNorthPoleAndIntersectionOutput;
var result = [];
var doesCross = PolygonSplitter.splitContours(inputContours, result);
expect(expectedResult).toEqual(result);
expect(doesCross).toEqual(true);
});
it('split a polygon with a hole, the hole crosses the anti-meridian', function(){
var inputContours = PolygonSplitterData.polygonHoleInput;
var expectedResult = PolygonSplitterData.polygonHoleOutput;
var result = [];
var doesCross = PolygonSplitter.splitContours(inputContours, result);
expect(expectedResult).toEqual(result);
expect(doesCross).toEqual(true);
});
it('split a polygon with a hole, the hole does not cross the anti-meridian', function(){
var inputContours = PolygonSplitterData.polygonHole2Input;
var expectedResult = PolygonSplitterData.polygonHole2Output;
var result = [];
var doesCross = PolygonSplitter.splitContours(inputContours, result);
expect(expectedResult).toEqual(result);
expect(doesCross).toEqual(true);
});
it('doesn\'t split a full sphere sector', function() {
var inputContours = PolygonSplitterData.fullSphereSectorInput;
var expectedResult = PolygonSplitterData.fullSphereSectorOutput;
var result = [];
var doesCross = PolygonSplitter.splitContours(inputContours, result);
expect(expectedResult).toEqual(result);
expect(doesCross).toEqual(false);
});
});
});