defineSuite([ 'Core/PolylinePipeline', 'Core/Cartesian3', 'Core/Ellipsoid', 'Core/Math', 'Core/Transforms' ], function( PolylinePipeline, Cartesian3, Ellipsoid, CesiumMath, Transforms) { 'use strict'; it('wrapLongitude', function() { var positions = Cartesian3.fromDegreesArray([ -75.163789, 39.952335, -80.2264393, 25.7889689 ]); var segments = PolylinePipeline.wrapLongitude(positions); expect(segments.lengths.length).toEqual(1); expect(segments.lengths[0]).toEqual(2); }); it('wrapLongitude works with empty array', function() { var segments = PolylinePipeline.wrapLongitude([]); expect(segments.lengths.length).toEqual(0); }); it('wrapLongitude breaks polyline into segments', function() { var positions = Cartesian3.fromDegreesArray([ -179.0, 39.0, 2.0, 25.0 ]); var segments = PolylinePipeline.wrapLongitude(positions); expect(segments.lengths.length).toEqual(2); expect(segments.lengths[0]).toEqual(2); expect(segments.lengths[1]).toEqual(2); }); it('wrapLongitude breaks polyline into segments with model matrix', function() { var center = Cartesian3.fromDegrees(-179.0, 39.0); var matrix = Transforms.eastNorthUpToFixedFrame(center, Ellipsoid.WGS84); var positions = [ new Cartesian3(0.0, 0.0, 0.0), new Cartesian3(0.0, 100000000.0, 0.0)]; var segments = PolylinePipeline.wrapLongitude(positions, matrix); expect(segments.lengths.length).toEqual(2); expect(segments.lengths[0]).toEqual(2); expect(segments.lengths[1]).toEqual(2); }); it('generateArc throws without positions', function() { expect(function() { PolylinePipeline.generateArc(); }).toThrowDeveloperError(); }); it('generateArc accepts a height array for single value', function() { var positions = [Cartesian3.fromDegrees(0, 0)]; var height = [30]; var newPositions = PolylinePipeline.generateArc({ positions: positions, height: height }); expect(newPositions.length).toEqual(3); expect(Cartesian3.fromArray(newPositions, 0)).toEqualEpsilon(Cartesian3.fromDegrees(0, 0, 30), CesiumMath.EPSILON6); }); it('generateArc subdivides in half', function() { var p1 = Cartesian3.fromDegrees(0, 0); var p2 = Cartesian3.fromDegrees(90, 0); var p3 = Cartesian3.fromDegrees(45, 0); var positions = [p1, p2]; var newPositions = PolylinePipeline.generateArc({ positions: positions, granularity: CesiumMath.PI_OVER_TWO/2, ellipsoid: Ellipsoid.WGS84 }); expect(newPositions.length).toEqual(3*3); var p1n = Cartesian3.fromArray(newPositions, 0); var p3n = Cartesian3.fromArray(newPositions, 3); var p2n = Cartesian3.fromArray(newPositions, 6); expect(Cartesian3.equalsEpsilon(p1, p1n, CesiumMath.EPSILON4)).toEqual(true); expect(Cartesian3.equalsEpsilon(p2, p2n, CesiumMath.EPSILON4)).toEqual(true); expect(Cartesian3.equalsEpsilon(p3, p3n, CesiumMath.EPSILON4)).toEqual(true); }); it('generateArc works with empty array', function() { var newPositions = PolylinePipeline.generateArc({ positions: [] }); expect(newPositions.length).toEqual(0); }); it('generateArc works one position', function() { var newPositions = PolylinePipeline.generateArc({ positions: [Cartesian3.UNIT_Z], ellipsoid: Ellipsoid.UNIT_SPHERE }); expect(newPositions.length).toEqual(3); expect(newPositions).toEqual([0,0,1]); }); });