Replace unused entries with NaNs
This commit is contained in:
@@ -3,6 +3,12 @@ goog.provide('ol.structs.Buffer');
|
||||
goog.require('ol.structs.IntegerSet');
|
||||
|
||||
|
||||
/**
|
||||
* @define {boolean} Replace unused entries with NaNs.
|
||||
*/
|
||||
ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS = goog.DEBUG;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
@@ -37,6 +43,14 @@ ol.structs.Buffer = function(opt_arr, opt_used, opt_dirty) {
|
||||
if (opt_dirty && used !== 0) {
|
||||
this.dirtySet_.addRange(0, used);
|
||||
}
|
||||
if (ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS) {
|
||||
var arr = this.arr_;
|
||||
var n = arr.length;
|
||||
var i;
|
||||
for (i = used; i < n; ++i) {
|
||||
arr[i] = NaN;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -111,6 +125,13 @@ ol.structs.Buffer.prototype.getFreeSet = function() {
|
||||
ol.structs.Buffer.prototype.remove = function(index, size) {
|
||||
this.freeSet_.addRange(index, index + size);
|
||||
this.dirtySet_.removeRange(index, index + size);
|
||||
if (ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS) {
|
||||
var arr = this.arr_;
|
||||
var i;
|
||||
for (i = 0; i < size; ++i) {
|
||||
arr[index + i] = NaN;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -247,28 +247,32 @@ describe('ol.structs.Buffer', function() {
|
||||
it('allows multiple adds and removes', function() {
|
||||
var b = new ol.structs.Buffer(new Array(8), 0);
|
||||
expect(b.add([0, 1])).to.be(0);
|
||||
expect(b.getArray()).to.equalArray([
|
||||
0, 1,
|
||||
undefined, undefined,
|
||||
undefined, undefined,
|
||||
undefined, undefined
|
||||
]);
|
||||
expect(b.getArray()).to.equalArray([0, 1, NaN, NaN, NaN, NaN, NaN, NaN]);
|
||||
expect(b.getCount()).to.be(2);
|
||||
expect(b.add([2, 3, 4, 5])).to.be(2);
|
||||
expect(b.getArray()).to.equalArray([0, 1, 2, 3, 4, 5, NaN, NaN]);
|
||||
expect(b.getCount()).to.be(6);
|
||||
expect(b.add([6, 7])).to.be(6);
|
||||
expect(b.getCount()).to.be(8);
|
||||
expect(b.getArray()).to.equalArray([0, 1, 2, 3, 4, 5, 6, 7]);
|
||||
expect(b.getCount()).to.be(8);
|
||||
b.remove(2, 2);
|
||||
expect(b.getArray()).to.equalArray([0, 1, NaN, NaN, 4, 5, 6, 7]);
|
||||
expect(b.getCount()).to.be(6);
|
||||
expect(b.add([8, 9])).to.be(2);
|
||||
expect(b.getArray()).to.equalArray([0, 1, 8, 9, 4, 5, 6, 7]);
|
||||
expect(b.getCount()).to.be(8);
|
||||
b.remove(1, 1);
|
||||
expect(b.getArray()).to.equalArray([0, NaN, 8, 9, 4, 5, 6, 7]);
|
||||
expect(b.getCount()).to.be(7);
|
||||
b.remove(4, 4);
|
||||
expect(b.getArray()).to.equalArray([0, NaN, 8, 9, NaN, NaN, NaN, NaN]);
|
||||
expect(b.getCount()).to.be(3);
|
||||
expect(b.add([10, 11, 12])).to.be(4);
|
||||
expect(b.getArray()).to.equalArray([0, 1, 8, 9, 10, 11, 12, 7]);
|
||||
expect(b.getArray()).to.equalArray([0, NaN, 8, 9, 10, 11, 12, NaN]);
|
||||
expect(b.getCount()).to.be(6);
|
||||
expect(b.add([13])).to.be(1);
|
||||
expect(b.getArray()).to.equalArray([0, 13, 8, 9, 10, 11, 12, 7]);
|
||||
expect(b.getArray()).to.equalArray([0, 13, 8, 9, 10, 11, 12, NaN]);
|
||||
expect(b.getCount()).to.be(7);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user