MCPcopy Create free account
hub / github.com/dop251/goja / TestDynamicArray

Function TestDynamicArray

object_dynamic_test.go:167–245  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

165}
166
167func TestDynamicArray(t *testing.T) {
168 vm := New()
169 dynObj := &testDynArray{
170 r: vm,
171 }
172 a := vm.NewDynamicArray(dynObj)
173 vm.Set("a", a)
174 vm.testScriptWithTestLibX(`
175 assert(a instanceof Array, "instanceof Array");
176 assert(a instanceof Object, "instanceof Object");
177 assert(a === a, "self equality");
178 assert(a !== [], "non-equality");
179 assert(Array.isArray(a), "isArray()");
180 assert("length" in a, "length in a");
181 assert.sameValue(a.length, 0, "len == 0");
182 assert.sameValue(a[0], undefined, "a[0] (1)");
183
184 a[0] = 0;
185 assert.sameValue(a[0], 0, "a[0] (2)");
186 assert.sameValue(a.length, 1, "length");
187 assert(deepEqual(Object.getOwnPropertyDescriptor(a, 0), {value: 0, writable: true, enumerable: true, configurable: true}), "prop desc");
188 assert(deepEqual(Object.getOwnPropertyDescriptor(a, "length"), {value: 1, writable: true, enumerable: false, configurable: false}), "length prop desc");
189
190 assert("__proto__" in a, "__proto__ in a");
191 assert.sameValue(a.__proto__, Array.prototype, "__proto__");
192
193 assert(compareArray(Object.keys(a), ["0"]), "Object.keys()");
194 assert(compareArray(Reflect.ownKeys(a), ["0", "length"]), "Reflect.ownKeys()");
195
196 a.length = 2;
197 assert.sameValue(a.length, 2, "length after grow");
198 assert.sameValue(a[1], undefined, "a[1]");
199
200 a[1] = 1;
201 assert.sameValue(a[1], 1, "a[1] after set");
202 a.length = 1;
203 assert.sameValue(a.length, 1, "length after shrink");
204 assert.sameValue(a[1], undefined, "a[1] after shrink");
205 a.length = 2;
206 assert.sameValue(a.length, 2, "length after shrink and grow");
207 assert.sameValue(a[1], undefined, "a[1] after grow");
208
209 a[0] = 3; a[1] = 1; a[2] = 2;
210 assert.sameValue(a.length, 3);
211 var keys = [];
212 for (var key in a) {
213 keys.push(key);
214 }
215 assert(compareArray(keys, ["0","1","2"]), "for-in");
216
217 var vals = [];
218 for (var val of a) {
219 vals.push(val);
220 }
221 assert(compareArray(vals, [3,1,2]), "for-of");
222
223 a.sort();
224 assert(compareArray(a, [1,2,3]), "sort: "+a);

Callers

nothing calls this directly

Calls 4

NewFunction · 0.85
NewDynamicArrayMethod · 0.80
SetMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…