1 | suite 'Range Literals', ->
|
2 |
|
3 |
|
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
|