(t *testing.T)
| 165 | } |
| 166 | |
| 167 | func 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); |
nothing calls this directly
no test coverage detected
searching dependent graphs…