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

Side by Side Diff: test/harmony/proxies.js

Issue 6992072: Implement set trap for proxies, and revamp class hierarchy in preparation (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Renamed range constants for InstanceType enum. Created 9 years, 6 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 | Annotate | Revision Log
OLDNEW
(Empty)
1
Kevin Millikin (Chromium) 2011/05/30 16:32:29 This needs the license header. I'd move it into a
rossberg 2011/05/31 14:50:24 Done.
2
3 function ASSERT(b) {
4 print(b ? "OK." : "Error!")
5 }
6
7
8 // Getters.
9 print("Getters:")
10
11 function TestGet(handler) {
12 var o = Proxy.create(handler)
13 ASSERT(o.a === 42)
14 ASSERT(o["b"] === 42)
15 // ASSERT(Object.getOwnPropertyDescriptor(o, "b").value === 42)
16 }
17
18 TestGet({get: function(r, k) { return 42 }})
19 TestGet({getPropertyDescriptor: function(k) { return {value: 42} }})
20 TestGet({getPropertyDescriptor: function(k) { return {get value() { return 42 }} }})
21 TestGet({get: undefined, getPropertyDescriptor: function(k) { return {value: 42} }})
22
23 TestGet(Proxy.create({get: function(pr, pk) { return function(r, k) { return 42 } }}))
24
25
26 // Setters.
27 print("Setters:")
28
29 var key
30 var val
31 function TestSet(handler) {
32 var o = Proxy.create(handler)
33 ASSERT(o.a = 42)
34 ASSERT(key === "a")
35 ASSERT(val === 42)
36 ASSERT(o["b"] = 43)
37 ASSERT(key === "b")
38 ASSERT(val === 43)
39 // ASSERT(Object.defineProperty(o, "c", {value: 44}))
40 // ASSERT(key === "c")
41 // ASSERT(val === 44)
42 }
43
44 TestSet({set: function(r, k, v) { key = k; val = v; return true }})
45 TestSet({getOwnPropertyDescriptor: function(k) { return {writable: true} },
46 defineProperty: function(k, desc) { key = k, val = desc.value }})
47 TestSet({getOwnPropertyDescriptor: function(k) { return {get writable() { return true }} },
48 defineProperty: function(k, desc) { key = k, val = desc.value }})
49 TestSet({getOwnPropertyDescriptor: function(k) { return {set: function(v) { key = k, val = v }} }})
50 TestSet({getOwnPropertyDescriptor: function(k) { return null },
51 getPropertyDescriptor: function(k) { return {writable: true} },
52 defineProperty: function(k, desc) { key = k, val = desc.value }})
53 TestSet({getOwnPropertyDescriptor: function(k) { return null },
54 getPropertyDescriptor: function(k) { return {get writable() { return tr ue }} },
55 defineProperty: function(k, desc) { key = k, val = desc.value }})
56 TestSet({getOwnPropertyDescriptor: function(k) { return null },
57 getPropertyDescriptor: function(k) { return {set: function(v) { key = k , val = v }} }})
58 TestSet({getOwnPropertyDescriptor: function(k) { return null },
59 getPropertyDescriptor: function(k) { return null },
60 defineProperty: function(k, desc) { key = k, val = desc.value }})
61
62 TestSet(Proxy.create({get: function(pr, pk) { return function(r, k, v) { key = k ; val = v; return true } }}))
63
64
65
66 // Comparison.
67 print("Comparison:")
68
69 var o1 = Proxy.create({})
70 var o2 = Proxy.create({})
71
72 ASSERT(o1 == o1)
73 ASSERT(o2 == o2)
74 ASSERT(!(o1 == o2))
75 ASSERT(!(o1 == {}))
76 ASSERT(!({} == o2))
77 ASSERT(!({} == {}))
78
79 ASSERT(o1 === o1)
80 ASSERT(o2 === o2)
81 ASSERT(!(o1 === o2))
82 ASSERT(!(o1 === {}))
83 ASSERT(!({} === o2))
84 ASSERT(!({} === {}))
85
86
87
88 // Type.
89 print("Type:")
90
91 ASSERT(typeof Proxy.create({}) == "object")
92 ASSERT("object" == typeof Proxy.create({}))
93 ASSERT((function(o) { return typeof o })(Proxy.create({})) == "object")
94
95 // No function proxies yet.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698