Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Side by Side Diff: test/mjsunit/third_party/object-keys/object-keys.js

Issue 1397063002: [runtime] Fancify KeyAccumulator (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: nits Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/runtime/runtime-object.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006 Apple Computer, Inc. All rights reserved. 1 // Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
2 // 2 //
3 // Redistribution and use in source and binary forms, with or without 3 // Redistribution and use in source and binary forms, with or without
4 // modification, are permitted provided that the following conditions 4 // modification, are permitted provided that the following conditions
5 // are met: 5 // are met:
6 // 6 //
7 // 1. Redistributions of source code must retain the above copyright 7 // 1. Redistributions of source code must retain the above copyright
8 // notice, this list of conditions and the following disclaimer. 8 // notice, this list of conditions and the following disclaimer.
9 // 9 //
10 // 2. Redistributions in binary form must reproduce the above 10 // 2. Redistributions in binary form must reproduce the above
(...skipping 24 matching lines...) Expand all
35 assertEquals(Object.keys("foo"), ["0", "1", "2"]); 35 assertEquals(Object.keys("foo"), ["0", "1", "2"]);
36 assertThrows(function () { Object.keys(null) }, TypeError); 36 assertThrows(function () { Object.keys(null) }, TypeError);
37 assertThrows(function () { Object.keys(undefined) }, TypeError); 37 assertThrows(function () { Object.keys(undefined) }, TypeError);
38 38
39 assertEquals(Object.keys({}), []); 39 assertEquals(Object.keys({}), []);
40 assertEquals(Object.keys({a:null}), ['a']); 40 assertEquals(Object.keys({a:null}), ['a']);
41 assertEquals(Object.keys({a:null, b:null}), ['a', 'b']); 41 assertEquals(Object.keys({a:null, b:null}), ['a', 'b']);
42 assertEquals(Object.keys({b:null, a:null}), ['b', 'a']); 42 assertEquals(Object.keys({b:null, a:null}), ['b', 'a']);
43 assertEquals(Object.keys([]), []); 43 assertEquals(Object.keys([]), []);
44 assertEquals(Object.keys([null]), ['0']); 44 assertEquals(Object.keys([null]), ['0']);
45 assertEquals(Object.keys([undefined]), ['0']);
45 assertEquals(Object.keys([null,null]), ['0', '1']); 46 assertEquals(Object.keys([null,null]), ['0', '1']);
46 assertEquals(Object.keys([null,null,,,,null]), ['0', '1', '5']); 47 assertEquals(Object.keys([null,null,,,,null]), ['0', '1', '5']);
47 assertEquals(Object.keys({__proto__:{a:null}}), []); 48 assertEquals(Object.keys({__proto__:{a:null}}), []);
48 assertEquals(Object.keys({__proto__:[1,2,3]}), []); 49 assertEquals(Object.keys({__proto__:[1,2,3]}), []);
49 var x = []; 50 var x = [];
50 x.__proto__ = [1, 2, 3]; 51 x.__proto__ = [1, 2, 3];
51 assertEquals(Object.keys(x), []); 52 assertEquals(Object.keys(x), []);
52 assertEquals(Object.keys(function () {}), []); 53 assertEquals(Object.keys(function () {}), []);
53 54
54 assertEquals('string', typeof(Object.keys([1])[0])); 55 assertEquals('string', typeof(Object.keys([1])[0]));
55 56
56 function argsTest(a, b, c) { 57 function argsTest(a, b, c) {
57 assertEquals(['0', '1', '2'], Object.keys(arguments)); 58 assertEquals(['0', '1', '2'], Object.keys(arguments));
58 } 59 }
59 60
60 argsTest(1, 2, 3); 61 argsTest(1, 2, 3);
61 62
62 var literal = {a: 1, b: 2, c: 3}; 63 var literal = {a: 1, b: 2, c: 3};
63 var keysBefore = Object.keys(literal); 64 var keysBefore = Object.keys(literal);
64 assertEquals(['a', 'b', 'c'], keysBefore); 65 assertEquals(['a', 'b', 'c'], keysBefore);
65 keysBefore[0] = 'x'; 66 keysBefore[0] = 'x';
66 var keysAfter = Object.keys(literal); 67 var keysAfter = Object.keys(literal);
67 assertEquals(['a', 'b', 'c'], keysAfter); 68 assertEquals(['a', 'b', 'c'], keysAfter);
68 assertEquals(['x', 'b', 'c'], keysBefore); 69 assertEquals(['x', 'b', 'c'], keysBefore);
70
71
72 var o = [1, 2, 3];
73 assertEquals(['0', '1', '2'], Object.keys(o));
74 Object.defineProperty(o, '0', {
75 enumerable: false,
76 });
77 assertEquals(['1', '2'], Object.keys(o));
78
79
80 (function(){
81 assertEquals(['0', '1', '2'], Object.keys(arguments));
82 Object.defineProperty(arguments, '0', {
83 enumerable: false,
84 });
85 assertEquals(['1', '2'], Object.keys(arguments));
86 })(0,1,2);
87
88
89 (function(a, b){
90 assertEquals(['0', '1', '2'], Object.keys(arguments));
91 Object.defineProperty(arguments, '0', {
92 enumerable: false,
93 });
94 assertEquals(['1', '2'], Object.keys(arguments));
95 })(0,1,2);
96
97 var b = [];
98 assertEquals(0, Object.keys(b).length);
99 b[0] = undefined;
100 assertEquals(1, Object.keys(b).length);
OLDNEW
« no previous file with comments | « src/runtime/runtime-object.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698