UNPKG

2.32 kBtext/coffeescriptView Raw
1suite 'Range Literals', ->
2
3# TODO: add indexing and method invocation tests: [1..4][0] is 1, [0...3].toString()
4
5 test "basic inclusive ranges", ->
6 arrayEq [1, 2, 3] , [1..3]
7 arrayEq [0, 1, 2] , [0..2]
8 arrayEq [0, 1] , [0..1]
9 arrayEq [0] , [0..0]
10 arrayEq [-1] , [-1..-1]
11 arrayEq [-1, 0] , [-1..0]
12 arrayEq [-1, 0, 1], [-1..1]
13
14 test "basic exclusive ranges", ->
15 arrayEq [1, 2, 3] , [1...4]
16 arrayEq [0, 1, 2] , [0...3]
17 arrayEq [0, 1] , [0...2]
18 arrayEq [0] , [0...1]
19 arrayEq [-1] , [-1...0]
20 arrayEq [-1, 0] , [-1...1]
21 arrayEq [-1, 0, 1], [-1...2]
22
23 arrayEq [], [1...1]
24 arrayEq [], [0...0]
25 arrayEq [], [-1...-1]
26
27 test "downward ranges", ->
28 arrayEq [0..9], [9..0].reverse()
29 arrayEq [5, 4, 3, 2] , [5..2]
30 arrayEq [2, 1, 0, -1], [2..-1]
31
32 arrayEq [3, 2, 1] , [3..1]
33 arrayEq [2, 1, 0] , [2..0]
34 arrayEq [1, 0] , [1..0]
35 arrayEq [0] , [0..0]
36 arrayEq [-1] , [-1..-1]
37 arrayEq [0, -1] , [0..-1]
38 arrayEq [1, 0, -1] , [1..-1]
39 arrayEq [0, -1, -2], [0..-2]
40
41 arrayEq [4, 3, 2], [4...1]
42 arrayEq [3, 2, 1], [3...0]
43 arrayEq [2, 1] , [2...0]
44 arrayEq [1] , [1...0]
45 arrayEq [] , [0...0]
46 arrayEq [] , [-1...-1]
47 arrayEq [0] , [0...-1]
48 arrayEq [0, -1] , [0...-2]
49 arrayEq [1, 0] , [1...-1]
50 arrayEq [2, 1, 0], [2...-1]
51
52 test "ranges with variables as enpoints", ->
53 [a, b] = [1, 3]
54 arrayEq [1, 2, 3], [a..b]
55 arrayEq [1, 2] , [a...b]
56 b = -2
57 arrayEq [1, 0, -1, -2], [a..b]
58 arrayEq [1, 0, -1] , [a...b]
59
60 test "ranges with expressions as endpoints", ->
61 [a, b] = [1, 3]
62 arrayEq [2, 3, 4, 5, 6], [(a+1)..2*b]
63 arrayEq [2, 3, 4, 5] , [(a+1)...2*b]
64
65 test "large ranges are generated with looping constructs", ->
66 down = [99..0]
67 eq 100, (len = down.length)
68 eq 0, down[len - 1]
69
70 up = [0...100]
71 eq 100, (len = up.length)
72 eq 99, up[len - 1]
73
74 test "#1012 slices with arguments object", ->
75 expected = [0..9]
76 argsAtStart = (-> [arguments[0]..9]) 0
77 arrayEq expected, argsAtStart
78 argsAtEnd = (-> [0..arguments[0]]) 9
79 arrayEq expected, argsAtEnd
80 argsAtBoth = (-> [arguments[0]..arguments[1]]) 0, 9
81 arrayEq expected, argsAtBoth