This repository has been archived by the owner on Jan 1, 2019. It is now read-only.
/
array.coffee
184 lines (163 loc) · 9.99 KB
/
array.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
helfer = require '../src/helfer'
module.exports =
'coerceToArray': (test) ->
test.deepEqual [], helfer.coerceToArray []
test.deepEqual [1, 2, 3], helfer.coerceToArray [1, 2, 3]
test.deepEqual [1], helfer.coerceToArray 1
test.deepEqual [], helfer.coerceToArray null
test.done()
'findIndex': (test) ->
test.equal -1, helfer.findIndex [], -> true
test.equal 0, helfer.findIndex [1], (x) -> x is 1
test.equal -1, helfer.findIndex [1], (x) -> x is 2
test.equal 1, helfer.findIndex [1, 2, 3], (x) -> x > 1
test.equal -1, helfer.findIndex [1, 2, 3], (x) -> x > 3
test.done()
'findIndexWhereProperty': (test) ->
test.equals -1, helfer.findIndexWhereProperty(
[]
'a'
)
test.equals -1, helfer.findIndexWhereProperty(
[{}, {}, {b: 'b'}]
'a'
)
test.equals 0, helfer.findIndexWhereProperty(
[{a: 'a'}, {}, {b: 'b'}]
'a'
)
test.equals -1, helfer.findIndexWhereProperty(
[{a: undefined}, {}, {b: 'b'}]
'a'
)
test.equals 3, helfer.findIndexWhereProperty(
[{}, {}, {b: 'b'}, {a: null}]
'a'
)
test.done()
'splitArrayWhere': (test) ->
test.deepEqual [[], []],
helfer.splitArrayWhere [], -> true
test.deepEqual [[], [1, 2, 3]],
helfer.splitArrayWhere [1, 2, 3], -> true
test.deepEqual [[1, 2, 3], []],
helfer.splitArrayWhere [1, 2, 3], -> false
test.deepEqual [[1], [2, 3]],
helfer.splitArrayWhere [1, 2, 3], (x) -> x is 2
test.done()
'findIndexWhereSequence': (test) ->
test.equal -1, helfer.findIndexWhereSequence [], []
test.equal -1, helfer.findIndexWhereSequence [], ['where']
test.equal -1, helfer.findIndexWhereSequence ['first'], []
test.equal 0, helfer.findIndexWhereSequence ['where'], ['where']
test.equal -1, helfer.findIndexWhereSequence ['first'], ['where']
test.equal -1, helfer.findIndexWhereSequence ['first', 'order', 'report'], ['where']
test.equal 3, helfer.findIndexWhereSequence ['first', 'order', 'report', 'where'], ['where']
test.equal 1, helfer.findIndexWhereSequence ['first', 'where', 'created', 'at'], ['where']
test.equal 2, helfer.findIndexWhereSequence ['first', 'order', 'where', 'created', 'at', 'where'], ['where']
test.equal 4, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['where']
test.equal 0, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['first']
test.equal 0, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['first', 'order']
test.equal 0, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['first', 'order', 'report']
test.equal 1, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['order', 'report', 'log']
test.equal 2, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['report', 'log', 'where']
test.equal 3, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['log', 'where', 'created', 'at']
test.equal 4, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['where', 'created', 'at', 'where']
test.equal 5, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['created', 'at', 'where', 'id']
test.equal 6, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['at', 'where', 'id']
test.equal 7, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['where', 'id']
test.equal 8, helfer.findIndexWhereSequence ['first', 'order', 'report', 'log', 'where', 'created', 'at', 'where', 'id'], ['id']
test.equal 6, helfer.findIndexWhereSequence ['first', 'order', 'report', 'where', 'order', 'id', 'order', 'by', 'created', 'at', 'desc', 'order', 'by', 'order'], ['order', 'by']
test.equal 3, helfer.findIndexWhereSequence ['created', 'at', 'desc', 'order', 'by', 'order'], ['order', 'by']
test.equal -1, helfer.findIndexWhereSequence ['order'], ['order', 'by']
test.done()
'splitArrayWhereSequence': (test) ->
test.deepEqual [[]],
helfer.splitArrayWhereSequence [], 'where'
test.deepEqual [[], []],
helfer.splitArrayWhereSequence ['where'], 'where'
test.deepEqual [['first']],
helfer.splitArrayWhereSequence ['first'], 'where'
test.deepEqual [['first', 'order', 'report']],
helfer.splitArrayWhereSequence ['first', 'order', 'report'], 'where'
test.deepEqual [['first', 'order', 'report'], []],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where'], 'where'
test.deepEqual [['first', 'order', 'report'], ['created', 'at']],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'created', 'at'], 'where'
test.deepEqual [['first', 'order', 'report'], ['created', 'at'], []],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'created', 'at', 'where'], 'where'
test.deepEqual [['first', 'order', 'report'], ['created', 'at'], ['id']],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'created', 'at', 'where', 'id'], 'where'
test.deepEqual [[]],
helfer.splitArrayWhereSequence [], []
test.deepEqual [[]],
helfer.splitArrayWhereSequence [], ['where']
test.deepEqual [[], []],
helfer.splitArrayWhereSequence ['where'], ['where']
test.deepEqual [['first']],
helfer.splitArrayWhereSequence ['first'], ['where']
test.deepEqual [['first', 'order', 'report']],
helfer.splitArrayWhereSequence ['first', 'order', 'report'], ['where']
test.deepEqual [['first', 'order', 'report'], []],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where'], ['where']
test.deepEqual [['first', 'order', 'report'], ['created', 'at']],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'created', 'at'], ['where']
test.deepEqual [['first', 'order', 'report'], ['created', 'at'], []],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'created', 'at', 'where'], ['where']
test.deepEqual [['first', 'order', 'report'], ['created', 'at'], ['id']],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'created', 'at', 'where', 'id'], ['where']
test.deepEqual [[]],
helfer.splitArrayWhereSequence [], []
test.deepEqual [[]],
helfer.splitArrayWhereSequence [], ['order', 'by']
test.deepEqual [[], []],
helfer.splitArrayWhereSequence ['order', 'by'], ['order', 'by']
test.deepEqual [['first']],
helfer.splitArrayWhereSequence ['first'], ['order', 'by']
test.deepEqual [['first', 'order', 'report']],
helfer.splitArrayWhereSequence ['first', 'order', 'report'], ['order', 'by']
test.deepEqual [['first', 'order', 'report', 'where', 'order', 'id']],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'order', 'id'], ['order', 'by']
test.deepEqual [['first', 'order', 'report', 'where', 'order', 'id'], []],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'order', 'id', 'order', 'by'], ['order', 'by']
test.deepEqual [['first', 'order', 'report', 'where', 'order', 'id'], ['created', 'at', 'desc']],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'order', 'id', 'order', 'by', 'created', 'at', 'desc'], ['order', 'by']
test.deepEqual [['first', 'order', 'report', 'where', 'order', 'id'], ['created', 'at', 'desc'], ['count', 'asc']],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'order', 'id', 'order', 'by', 'created', 'at', 'desc', 'order', 'by', 'count', 'asc'], ['order', 'by']
test.deepEqual [['first', 'order', 'report', 'where', 'order', 'id'], ['created', 'at', 'desc'], ['order']],
helfer.splitArrayWhereSequence ['first', 'order', 'report', 'where', 'order', 'id', 'order', 'by', 'created', 'at', 'desc', 'order', 'by', 'order'], ['order', 'by']
test.deepEqual [[], []],
helfer.splitArrayWhereSequence ['table'], ['table']
test.deepEqual [['user'], []],
helfer.splitArrayWhereSequence ['user', 'table'], ['table']
test.deepEqual [['project', 'message'], []],
helfer.splitArrayWhereSequence ['project', 'message', 'table'], ['table']
test.deepEqual [['project', 'message'], ['garbage']],
helfer.splitArrayWhereSequence ['project', 'message', 'table', 'garbage'], ['table']
test.deepEqual [['project', 'message'], ['garbage'], []],
helfer.splitArrayWhereSequence ['project', 'message', 'table', 'garbage', 'table'], ['table']
test.deepEqual [['project', 'message'], ['garbage'], ['more', 'garbage']],
helfer.splitArrayWhereSequence ['project', 'message', 'table', 'garbage', 'table', 'more', 'garbage'], ['table']
test.done()
'reverseIndex': (test) ->
test.deepEqual {},
helfer.reverseIndex {}
test.throws ->
helfer.reverseIndex {a: null}
test.deepEqual {b: ['a']},
helfer.reverseIndex {a: 'b'}
test.deepEqual {b: ['a', 'c']},
helfer.reverseIndex {a: 'b', c: 'b'}
test.deepEqual {b: ['a', 'c', 'f'], e: ['d', 'i'], h: ['g']},
helfer.reverseIndex {a: 'b', c: 'b', d: 'e', f: 'b', g: 'h', i: 'e'}
test.done()
'arrayOfStringsHasDuplicates': (test) ->
test.ok not helfer.arrayOfStringsHasDuplicates []
test.ok not helfer.arrayOfStringsHasDuplicates ['a']
test.ok not helfer.arrayOfStringsHasDuplicates ['a', 'b']
test.ok not helfer.arrayOfStringsHasDuplicates ['a', 'b', 'c']
test.ok helfer.arrayOfStringsHasDuplicates ['a', 'a']
test.ok helfer.arrayOfStringsHasDuplicates ['a', 'a', 'b']
test.ok helfer.arrayOfStringsHasDuplicates ['b', 'a', 'b']
test.ok helfer.arrayOfStringsHasDuplicates ['a', 'b', 'b']
test.done()