1 | suite 'Member Access', ->
|
2 |
|
3 |
|
4 |
|
5 | test 'various basic member accesses', ->
|
6 | nonceA = {}
|
7 | nonceB = {a: nonceA}
|
8 | nonceA.b = nonceB
|
9 | nil = null
|
10 | obj = {a: nonceA, prototype: {b: nonceB}}
|
11 | a = 'a'
|
12 | b = 'b'
|
13 |
|
14 | eq nonceA, obj.a
|
15 | eq nonceA, obj?.a
|
16 | eq nonceB, obj?.a.b
|
17 | eq nonceB, obj?.a[b]
|
18 | throws -> nil.a
|
19 | eq undefined, nil?.a
|
20 | eq undefined, nil?.a.b
|
21 | eq undefined, nil?.a[b]
|
22 |
|
23 | eq nonceA, obj[a]
|
24 | eq nonceA, obj?[a]
|
25 | eq nonceB, obj?[a].b
|
26 | eq nonceB, obj?[a][b]
|
27 | throws -> nil[a]
|
28 | eq undefined, nil?[a]
|
29 | eq undefined, nil?[a].b
|
30 | eq undefined, nil?[a][b]
|
31 |
|
32 | eq nonceB, obj::b
|
33 | eq nonceB, obj?::b
|
34 | eq nonceA, obj?::b.a
|
35 | eq nonceA, obj?::b[a]
|
36 | throws -> nil::b
|
37 | eq undefined, nil?::b
|
38 | eq undefined, nil?::b.a
|
39 | eq undefined, nil?::b[a]
|
40 |
|
41 | eq nonceB, obj::[b]
|
42 | eq nonceB, obj?::[b]
|
43 | eq nonceA, obj?::[b].a
|
44 | eq nonceA, obj?::[b][a]
|
45 | throws -> nil::[b]
|
46 | eq undefined, nil?::[b]
|
47 | eq undefined, nil?::[b].a
|
48 | eq undefined, nil?::[b][a]
|
49 |
|
50 |
|
51 |
|
52 | test 'dynamically accessing non-identifierNames', ->
|
53 | nonceA = {}
|
54 | nonceB = {}
|
55 | obj = {'a-b': nonceA}
|
56 | eq nonceA, obj['a-b']
|
57 | obj['c-d'] = nonceB
|
58 | eq nonceB, obj['c-d']
|