import WebGLArrayBuffer, {getArrayClassForType} from '../../../../src/ol/webgl/Buffer.js'; import { ARRAY_BUFFER, ELEMENT_ARRAY_BUFFER, STATIC_DRAW, STREAM_DRAW } from '../../../../src/ol/webgl.js'; describe('ol.webgl.Buffer', function() { describe('constructor', function() { it('sets the default usage when not specified', function() { const b = new WebGLArrayBuffer(ARRAY_BUFFER); expect(b.getUsage()).to.be(STATIC_DRAW); }); it('sets the given usage when specified', function() { const b = new WebGLArrayBuffer(ARRAY_BUFFER, STREAM_DRAW); expect(b.getUsage()).to.be(STREAM_DRAW); }); it('raises an error if an incorrect type is used', function(done) { try { new WebGLArrayBuffer(1234); } catch (e) { done(); } done(true); }); }); describe('#getArrayClassForType', function() { it('returns the correct typed array constructor', function() { expect(getArrayClassForType(ARRAY_BUFFER)).to.be(Float32Array); expect(getArrayClassForType(ELEMENT_ARRAY_BUFFER)).to.be(Uint32Array); }); }); describe('populate methods', function() { let b; beforeEach(function() { b = new WebGLArrayBuffer(ARRAY_BUFFER); }); it('initializes the array using a size', function() { b.ofSize(12); expect(b.getArray().length).to.be(12); expect(b.getArray()[0]).to.be(0); expect(b.getArray()[11]).to.be(0); }); it('initializes the array using an array', function() { b.fromArray([1, 2, 3, 4, 5]); expect(b.getArray().length).to.be(5); expect(b.getArray()[0]).to.be(1); expect(b.getArray()[1]).to.be(2); expect(b.getArray()[2]).to.be(3); expect(b.getArray()[3]).to.be(4); expect(b.getArray()[4]).to.be(5); }); it('initializes the array using a size', function() { const a = Float32Array.of(1, 2, 3, 4, 5); b.fromArrayBuffer(a.buffer); expect(b.getArray().length).to.be(5); expect(b.getArray()[0]).to.be(1); expect(b.getArray()[1]).to.be(2); expect(b.getArray()[2]).to.be(3); expect(b.getArray()[3]).to.be(4); expect(b.getArray()[4]).to.be(5); }); }); describe('#getSize', function() { let b; beforeEach(function() { b = new WebGLArrayBuffer(ARRAY_BUFFER); }); it('returns 0 when the buffer array is not initialized', function() { expect(b.getSize()).to.be(0); }); it('returns the size of the array otherwise', function() { b.ofSize(12); expect(b.getSize()).to.be(12); }); }); });