UNPKG

1.4 kBtext/coffeescriptView Raw
1suite 'Member Access', ->
2
3 # TODO: all of the things
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 # member access
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 # dynamic member access
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 # proto-member access
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 # dynamic proto-member access
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 # TODO: combinations of soaked member accesses
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']