text: define([
          'Core/Cartesian3',
          'Core/Cartographic',
          'Core/Ellipsoid',
          'Core/GeographicProjection',
          'Core/Math'
      ], function(
          Cartesian3,
          Cartographic,
          Ellipsoid,
          GeographicProjection,
          CesiumMath) {
          'use strict';
  
  describe('Core/GeographicProjection', function() {
  
      it('construct0', function() {
          var projection = new GeographicProjection();
          expect(projection.ellipsoid).toEqual(Ellipsoid.WGS84);
      });
  
      it('construct1', function() {
          var ellipsoid = Ellipsoid.UNIT_SPHERE;
          var projection = new GeographicProjection(ellipsoid);
          expect(projection.ellipsoid).toEqual(ellipsoid);
      });
  
      it('project0', function() {
          var height = 10.0;
          var cartographic = new Cartographic(0.0, 0.0, height);
          var projection = new GeographicProjection();
          expect(projection.project(cartographic)).toEqual(new Cartesian3(0.0, 0.0, height));
      });
  
      it('project1', function() {
          var ellipsoid = Ellipsoid.WGS84;
          var cartographic = new Cartographic(Math.PI, CesiumMath.PI_OVER_TWO, 0.0);
          var expected = new Cartesian3(Math.PI * ellipsoid.radii.x, CesiumMath.PI_OVER_TWO * ellipsoid.radii.x, 0.0);
          var projection = new GeographicProjection(ellipsoid);
          expect(projection.project(cartographic)).toEqual(expected);
      });
  
      it('project2', function() {
          var ellipsoid = Ellipsoid.UNIT_SPHERE;
          var cartographic = new Cartographic(-Math.PI, CesiumMath.PI_OVER_TWO, 0.0);
          var expected = new Cartesian3(-Math.PI, CesiumMath.PI_OVER_TWO, 0.0);
          var projection = new GeographicProjection(ellipsoid);
          expect(projection.project(cartographic)).toEqual(expected);
      });
  
      it('project3', function() {
          var ellipsoid = Ellipsoid.WGS84;
          var cartographic = new Cartographic(Math.PI, CesiumMath.PI_OVER_TWO, 0.0);
          var expected = new Cartesian3(Math.PI * ellipsoid.radii.x, CesiumMath.PI_OVER_TWO * ellipsoid.radii.x, 0.0);
          var projection = new GeographicProjection(ellipsoid);
          var result = new Cartesian3(0.0, 0.0, 0.0);
          var returnValue = projection.project(cartographic, result);
          expect(result).toEqual(returnValue);
          expect(result).toEqual(expected);
      });
  
      it('unproject0', function() {
          var cartographic = new Cartographic(CesiumMath.PI_OVER_TWO, CesiumMath.PI_OVER_FOUR, 12.0);
          var projection = new GeographicProjection();
          var projected = projection.project(cartographic);
          expect(projection.unproject(projected)).toEqual(cartographic);
      });
  
      it('unproject1', function() {
          var cartographic = new Cartographic(CesiumMath.PI_OVER_TWO, CesiumMath.PI_OVER_FOUR, 12.0);
          var projection = new GeographicProjection();
          var projected = projection.project(cartographic);
          var result = new Cartographic(0.0, 0.0, 0.0);
          var returnValue = projection.unproject(projected, result);
          expect(result).toEqual(returnValue);
          expect(result).toEqual(cartographic);
      });
  
      it('project throws without cartesian', function() {
          var projection = new GeographicProjection();
          expect(function() {
              return projection.unproject();
          }).toThrowDeveloperError();
      });
  });
  });
  