(depth)
| 194 | |
| 195 | |
| 196 | function TestInheritedElementSort(depth) { |
| 197 | var length = depth * 2 + 3; |
| 198 | var obj = {length: length}; |
| 199 | obj[depth * 2 + 1] = 0; |
| 200 | for (var i = 0; i < depth; i++) { |
| 201 | var newObj = {}; |
| 202 | newObj.__proto__ = obj; |
| 203 | obj[i] = undefined; |
| 204 | obj[i + depth + 1] = depth - i; |
| 205 | obj = newObj; |
| 206 | } |
| 207 | // expected (inherited) object: [undef1,...undefdepth,hole,1,...,depth,0,hole] |
| 208 | |
| 209 | Array.prototype.sort.call(obj, function(a,b) { return (b < a) - (a < b); }); |
| 210 | // expected result: [0,1,...,depth,undef1,...,undefdepth,hole] |
| 211 | var name = "SortInherit("+depth+")-"; |
| 212 | |
| 213 | assertEquals(length, obj.length, name+"length"); |
| 214 | for (var i = 0; i <= depth; i++) { |
| 215 | assertTrue(obj.hasOwnProperty(i), name + "hasvalue" + i); |
| 216 | assertEquals(i, obj[i], name + "value" + i); |
| 217 | } |
| 218 | for (var i = depth + 1; i < depth * 2 + 1; i++) { |
| 219 | assertEquals(undefined, obj[i], name + "undefined" + i); |
| 220 | assertTrue(obj.hasOwnProperty(i), name + "hasundefined" + i); |
| 221 | } |
| 222 | assertFalse(obj.hasOwnProperty(depth * 2 + 1), name + "hashole") |
| 223 | assertFalse(obj.hasOwnProperty(depth * 2 + 2), name + "hashole"); |
| 224 | } |
| 225 | |
| 226 | TestInheritedElementSort(5); |
| 227 | TestInheritedElementSort(15); |
no test coverage detected
searching dependent graphs…