DSDSWeb/static/js/Cesium-1.53/Specs/Core/ManagedArraySpec.js

151 lines
4.5 KiB
JavaScript
Raw Normal View History

2024-07-11 18:02:47 +08:00
defineSuite([
'Core/ManagedArray'
], function(
ManagedArray) {
'use strict';
it('constructor has expected default values', function() {
var array = new ManagedArray();
expect(array.length).toEqual(0);
});
it('constructor initializes length', function() {
var array = new ManagedArray(10);
expect(array.length).toEqual(10);
expect(array.values.length).toEqual(10);
});
it('can get and set values', function() {
var length = 10;
var array = new ManagedArray(length);
var i;
for (i = 0; i < length; ++i) {
array.set(i, i*i);
}
for (i = 0; i < length; ++i) {
expect(array.get(i)).toEqual(i*i);
expect(array.values[i]).toEqual(i*i);
}
});
it('get throws if index does not exist', function() {
var array = new ManagedArray();
array.reserve(5);
expect(array.values.length).toEqual(5);
expect(function() {
array.get(5);
}).toThrowDeveloperError();
});
it('set throws if index invalid', function() {
var array = new ManagedArray();
array.resize(10);
expect(function() {
array.set(undefined, 5);
}).toThrowDeveloperError();
});
it('set resizes array', function() {
var array = new ManagedArray();
array.set(0, 'a');
expect(array.length).toEqual(1);
array.set(5, 'b');
expect(array.length).toEqual(6);
array.set(2, 'c');
expect(array.length).toEqual(6);
});
it('peeks at the last element of the array', function() {
var array = new ManagedArray();
expect(array.peek()).toBeUndefined();
array.push(0);
expect(array.peek()).toBe(0);
array.push(1);
array.push(2);
expect(array.peek()).toBe(2);
});
it('can push values', function() {
var array = new ManagedArray();
var length = 10;
for (var i = 0; i < length; ++i) {
var val = Math.random();
array.push(val);
expect(array.length).toEqual(i+1);
expect(array.values.length).toEqual(i+1);
expect(array.get(i)).toEqual(val);
expect(array.values[i]).toEqual(val);
}
});
it('can pop values', function() {
var length = 10;
var array = new ManagedArray(length);
var i;
for (i = 0; i < length; ++i) {
array.set(i, Math.random());
}
for (i = length - 1; i >= 0; --i) {
var val = array.get(i);
expect(array.pop()).toEqual(val);
expect(array.length).toEqual(i);
expect(array.values.length).toEqual(length);
}
});
it('reserve throws if length is less than 0', function() {
var array = new ManagedArray();
expect(function() {
array.reserve(-1);
}).toThrowDeveloperError();
});
it('reserve', function() {
var array = new ManagedArray(2);
array.reserve(10);
expect(array.values.length).toEqual(10);
expect(array.length).toEqual(2);
array.reserve(20);
expect(array.values.length).toEqual(20);
expect(array.length).toEqual(2);
array.reserve(5);
expect(array.values.length).toEqual(20);
expect(array.length).toEqual(2);
});
it('resize throws if length is less than 0', function() {
var array = new ManagedArray();
expect(function() {
array.resize(-1);
}).toThrowDeveloperError();
});
it('resize', function() {
var array = new ManagedArray(2);
array.resize(10);
expect(array.values.length).toEqual(10);
expect(array.length).toEqual(10);
array.resize(20);
expect(array.values.length).toEqual(20);
expect(array.length).toEqual(20);
array.resize(5);
expect(array.values.length).toEqual(20);
expect(array.length).toEqual(5);
});
it('trim', function() {
var array = new ManagedArray(2);
array.reserve(10);
expect(array.length).toEqual(2);
expect(array.values.length).toEqual(10);
array.trim();
expect(array.values.length).toEqual(2);
array.trim(5);
expect(array.length).toEqual(2);
expect(array.values.length).toEqual(5);
array.trim(3);
expect(array.length).toEqual(2);
expect(array.values.length).toEqual(3);
});
});