151 lines
4.5 KiB
JavaScript
151 lines
4.5 KiB
JavaScript
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);
|
|
});
|
|
});
|