defineSuite([ 'Core/GeometryAttribute', 'Core/ComponentDatatype' ], function( GeometryAttribute, ComponentDatatype) { 'use strict'; it('constructor', function() { var color = new GeometryAttribute({ componentDatatype : ComponentDatatype.UNSIGNED_BYTE, componentsPerAttribute : 4, normalize : true, values : new Uint8Array([ 255, 0, 0, 255, 0, 255, 0, 255, 0, 0, 255, 255 ]) }); expect(color.componentDatatype).toEqual(ComponentDatatype.UNSIGNED_BYTE); expect(color.componentsPerAttribute).toEqual(4); expect(color.normalize).toEqual(true); expect(color.values).toEqual([ 255, 0, 0, 255, 0, 255, 0, 255, 0, 0, 255, 255 ]); }); it('constructor throws without componentDatatype', function() { expect(function() { return new GeometryAttribute({ componentsPerAttribute : 4, values : new Uint8Array([ 255, 0, 0, 255, 0, 255, 0, 255, 0, 0, 255, 255 ]) }); }).toThrowDeveloperError(); }); it('constructor throws without componentsPerAttribute', function() { expect(function() { return new GeometryAttribute({ componentDatatype : ComponentDatatype.UNSIGNED_BYTE, values : new Uint8Array([ 255, 0, 0, 255, 0, 255, 0, 255, 0, 0, 255, 255 ]) }); }).toThrowDeveloperError(); }); it('constructor throws when componentsPerAttribute is less than 1 or greater than 4', function() { expect(function() { return new GeometryAttribute({ componentDatatype : ComponentDatatype.UNSIGNED_BYTE, componentsPerAttribute : 7, values : new Uint8Array([ 255, 0, 0, 255, 0, 255, 0, 255, 0, 0, 255, 255 ]) }); }).toThrowDeveloperError(); }); it('constructor throws without values', function() { expect(function() { return new GeometryAttribute({ componentDatatype : ComponentDatatype.UNSIGNED_BYTE, componentsPerAttribute : 4 }); }).toThrowDeveloperError(); }); });