Skip to content

Commit dc952de

Browse files
committed
chore(test): moved array specs into own file, closes #69
1 parent d554292 commit dc952de

3 files changed

Lines changed: 230 additions & 218 deletions

File tree

src/arrays-spec.js

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
'use strict'
2+
3+
/* global describe, it */
4+
describe('check-more-types array predicates', function () {
5+
const la = require('lazy-ass')
6+
const check = require('..')
7+
8+
it('is an object', function () {
9+
const arrays = require('./arrays')
10+
la(check.object(arrays))
11+
})
12+
13+
describe('check/arrayOf', function () {
14+
it('validates array of strings', function () {
15+
la(check.arrayOf(check.string, ['foo', '']))
16+
})
17+
18+
it('validates array of empty strings', function () {
19+
la(!check.arrayOf(check.unemptyString, ['foo', '']))
20+
la(check.arrayOf(check.unemptyString, ['foo', 'bar']))
21+
})
22+
23+
it('validates array of positive numbers', function () {
24+
la(check.arrayOf(check.positiveNumber, [10, 20, 30]))
25+
})
26+
27+
it('validates schema for objects', function () {
28+
var person = {
29+
first: check.unemptyString,
30+
last: check.unemptyString
31+
}
32+
var isPerson = check.schema.bind(null, person)
33+
var arePeople = check.arrayOf.bind(null, isPerson)
34+
var people = [{
35+
first: 'foo',
36+
last: 'bar'
37+
}]
38+
la(arePeople(people), 'checked people')
39+
})
40+
})
41+
42+
describe('check/badItems', function () {
43+
it('finds empty strings', function () {
44+
var empty = check.badItems(check.unemptyString, ['foo', '', 'bar'])
45+
la(check.array(empty), 'returns array')
46+
la(empty.length === 1, 'has single item')
47+
la(empty[0] === '', 'has empty string')
48+
})
49+
50+
it('finds non strings', function () {
51+
var empty = check.badItems(check.string, ['foo', '', 'bar', 10])
52+
la(check.array(empty), 'returns array')
53+
la(empty.length === 1, 'has single item')
54+
la(empty[0] === 10, 'has number')
55+
})
56+
})
57+
58+
describe('check.unemptyArray', function () {
59+
la(check.fn(check.unemptyArray))
60+
61+
/** @sample check/defined */
62+
it('check.unemptyArray', function () {
63+
la(!check.unemptyArray(null))
64+
la(!check.unemptyArray(1))
65+
la(!check.unemptyArray({}))
66+
la(!check.unemptyArray([]))
67+
la(!check.unemptyArray(root.doesNotExist))
68+
la(check.unemptyArray([1]))
69+
la(check.unemptyArray(['foo', 'bar']))
70+
})
71+
})
72+
73+
describe('arrayOfStrings', function () {
74+
it('has check', function () {
75+
la(check.fn(check.arrayOfStrings))
76+
la(check.fn(check.verify.arrayOfStrings))
77+
})
78+
79+
it('check.arrayOfStrings', function () {
80+
// second argument is checkLowerCase
81+
la(check.arrayOfStrings(['foo', 'Foo']))
82+
la(!check.arrayOfStrings(['foo', 'Foo'], true))
83+
la(check.arrayOfStrings(['foo', 'bar'], true))
84+
la(!check.arrayOfStrings(['FOO', 'BAR'], true))
85+
})
86+
87+
it('checks if strings are lower case', function () {
88+
la(check.arrayOfStrings(['foo', 'Foo']))
89+
la(!check.arrayOfStrings(['foo', 'Foo'], true))
90+
la(check.arrayOfStrings(['foo', 'bar'], true))
91+
la(!check.arrayOfStrings(['FOO', 'BAR'], true))
92+
})
93+
94+
it('passes', function () {
95+
la(check.arrayOfStrings([]))
96+
la(check.arrayOfStrings(['foo']))
97+
la(check.arrayOfStrings(['foo', 'bar']))
98+
99+
check.verify.arrayOfStrings([])
100+
check.verify.arrayOfStrings(['foo'])
101+
check.verify.arrayOfStrings(['foo', 'bar'])
102+
})
103+
104+
it('fails', function () {
105+
la(check.raises(function () {
106+
check.verify.arrayOfStrings('foo')
107+
}))
108+
109+
la(check.raises(function () {
110+
check.verify.arrayOfStrings([1])
111+
}))
112+
113+
la(check.raises(function () {
114+
check.verify.arrayOfStrings(['foo', 1])
115+
}))
116+
})
117+
118+
/** @sample check/arrayOfStrings */
119+
it('works', function () {
120+
la(check.arrayOfStrings(['foo', 'BAR']))
121+
la(!check.arrayOfStrings(['foo', 4]))
122+
// can check lower case
123+
la(!check.arrayOfStrings(['foo', 'Bar'], true))
124+
// lower case flag should be boolean
125+
la(check.arrayOfStrings(['foo', 'Bar'], 1))
126+
})
127+
})
128+
129+
describe('arrayOfArraysOfStrings', function () {
130+
it('has check', function () {
131+
la(check.fn(check.arrayOfArraysOfStrings))
132+
la(check.fn(check.verify.arrayOfArraysOfStrings))
133+
})
134+
135+
it('check.arrayOfArraysOfStrings', function () {
136+
// second argument is checkLowerCase
137+
la(check.arrayOfArraysOfStrings([['foo'], ['bar']]))
138+
la(check.arrayOfArraysOfStrings([['foo'], ['bar']], true))
139+
la(!check.arrayOfArraysOfStrings([['foo'], ['BAR']], true))
140+
})
141+
142+
/** @sample check/arrayOfArraysOfStrings */
143+
it('checks if all strings are lower case', function () {
144+
la(check.arrayOfArraysOfStrings([['foo'], ['bar']]))
145+
la(check.arrayOfArraysOfStrings([['foo'], ['bar']], true))
146+
la(!check.arrayOfArraysOfStrings([['foo'], ['BAR']], true))
147+
})
148+
149+
it('returns true', function () {
150+
la(check.arrayOfArraysOfStrings([[]]))
151+
la(check.arrayOfArraysOfStrings([['foo'], ['bar']]))
152+
})
153+
154+
it('returns false', function () {
155+
la(!check.arrayOfArraysOfStrings([['foo', true]]))
156+
la(!check.arrayOfArraysOfStrings([['foo'], ['bar'], [1]]))
157+
})
158+
159+
it('passes', function () {
160+
check.verify.arrayOfArraysOfStrings([[]])
161+
check.verify.arrayOfArraysOfStrings([['foo']])
162+
check.verify.arrayOfArraysOfStrings([['foo'], ['bar'], []])
163+
})
164+
165+
it('fails', function () {
166+
la(check.raises(function () {
167+
check.verify.arrayOfArraysOfStrings('foo')
168+
}))
169+
170+
la(check.raises(function () {
171+
check.verify.arrayOfArraysOfStrings([1])
172+
}))
173+
174+
la(check.raises(function () {
175+
check.verify.arrayOfArraysOfStrings(['foo', 1])
176+
}))
177+
178+
la(check.raises(function () {
179+
check.verify.arrayOfArraysOfStrings([['foo', 1]])
180+
}))
181+
})
182+
})
183+
})

src/mid-level-spec.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,4 +215,51 @@ describe('check-more-types mid-level predicates', function () {
215215
la(!check.hexRgb('red'))
216216
})
217217
})
218+
219+
describe('check/contains', function () {
220+
it('is a function', function () {
221+
la(check.fn(check.contains))
222+
})
223+
224+
/** @sample check/contains */
225+
it('contains item in an array', function () {
226+
var items = ['foo', 1, 'bar']
227+
la(check.contains(items, 'foo'))
228+
la(check.contains(items, 1))
229+
la(check.contains(items, 'bar'))
230+
la(check.not.contains(items, 42))
231+
})
232+
233+
/** @sample check/contains */
234+
it('contains substring', function () {
235+
var str = 'foo bar baz'
236+
la(check.contains(str, 'foo'))
237+
la(check.contains(str, 'bar'))
238+
la(check.contains(str, 'r ba'))
239+
la(check.not.contains(str, 'foobar'))
240+
})
241+
})
242+
243+
describe('check.allSame', function () {
244+
la(check.fn(check.allSame))
245+
246+
it('returns false for non arrays', function () {
247+
la(!check.allSame('foo'))
248+
la(!check.allSame())
249+
la(check.allSame([]))
250+
})
251+
252+
/** @sample check/allSame */
253+
it('check.allSame', function () {
254+
var foo = {}
255+
var bar = {}
256+
la(check.allSame([foo, foo, foo]))
257+
la(!check.allSame([foo, foo, bar]))
258+
259+
// primitives are compared by value
260+
la(check.allSame([0, 0]))
261+
la(check.allSame(['foo', 'foo', 'foo']))
262+
la(!check.allSame([false, 0]))
263+
})
264+
})
218265
})

0 commit comments

Comments
 (0)