text: defineSuite([
          'Core/FrustumOutlineGeometry',
          'Core/Cartesian3',
          'Core/Math',
          'Core/PerspectiveFrustum',
          'Core/Quaternion',
          'Core/VertexFormat',
          'Specs/createPackableSpecs'
      ], function(
          FrustumOutlineGeometry,
          Cartesian3,
          CesiumMath,
          PerspectiveFrustum,
          Quaternion,
          VertexFormat,
          createPackableSpecs) {
      'use strict';
  
      it('constructor throws without options', function() {
          expect(function() {
              return new FrustumOutlineGeometry();
          }).toThrowDeveloperError();
      });
  
      it('constructor throws without frustum', function() {
          expect(function() {
              return new FrustumOutlineGeometry({
                  origin : Cartesian3.ZERO,
                  orientation : Quaternion.IDENTITY
              });
          }).toThrowDeveloperError();
      });
  
      it('constructor throws without position', function() {
          expect(function() {
              return new FrustumOutlineGeometry({
                  frustum : new PerspectiveFrustum(),
                  orientation : Quaternion.IDENTITY
              });
          }).toThrowDeveloperError();
      });
  
      it('constructor throws without orientation', function() {
          expect(function() {
              return new FrustumOutlineGeometry({
                  frustum : new PerspectiveFrustum(),
                  origin : Cartesian3.ZERO
              });
          }).toThrowDeveloperError();
      });
  
      it('constructor computes all vertex attributes', function() {
          var frustum = new PerspectiveFrustum();
          frustum.fov = CesiumMath.toRadians(30.0);
          frustum.aspectRatio = 1920.0 / 1080.0;
          frustum.near = 1.0;
          frustum.far = 3.0;
  
          var m = FrustumOutlineGeometry.createGeometry(new FrustumOutlineGeometry({
              frustum : frustum,
              origin : Cartesian3.ZERO,
              orientation : Quaternion.IDENTITY
          }));
  
          var numVertices = 8;
          var numLines = 12;
          expect(m.attributes.position.values.length).toEqual(numVertices * 3);
          expect(m.indices.length).toEqual(numLines * 2);
  
          expect(m.boundingSphere.center).toEqual(new Cartesian3(0.0, 0.0, 2.0));
          expect(m.boundingSphere.radius).toBeGreaterThan(1.0);
          expect(m.boundingSphere.radius).toBeLessThan(2.0);
      });
  
      var packableFrustum = new PerspectiveFrustum();
      packableFrustum.fov = 1.0;
      packableFrustum.aspectRatio = 2.0;
      packableFrustum.near = 3.0;
      packableFrustum.far = 4.0;
  
      createPackableSpecs(FrustumOutlineGeometry, new FrustumOutlineGeometry({
          frustum : packableFrustum,
          origin : Cartesian3.ZERO,
          orientation : Quaternion.IDENTITY,
          vertexFormat : VertexFormat.POSITION_ONLY
      }), [0.0, 1.0, 2.0, 3.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]);
  });
  