-
Notifications
You must be signed in to change notification settings - Fork 472
/
intersects.js
58 lines (52 loc) · 2.4 KB
/
intersects.js
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
const { test } = require('tap')
const intersects = require('../../ranges/intersects')
const Range = require('../../classes/range')
const Comparator = require('../../classes/comparator')
const comparatorIntersection = require('../fixtures/comparator-intersection.js')
const rangeIntersection = require('../fixtures/range-intersection.js')
test('intersect comparators', t => {
t.plan(comparatorIntersection.length)
comparatorIntersection.forEach(([c0, c1, expect, includePrerelease]) =>
t.test(`${c0} ${c1} ${expect}`, t => {
const opts = { loose: false, includePrerelease }
const comp0 = new Comparator(c0)
const comp1 = new Comparator(c1)
t.equal(intersects(comp0, comp1, opts), expect, `${c0} intersects ${c1} objects`)
t.equal(intersects(comp1, comp0, opts), expect, `${c1} intersects ${c0} objects`)
t.equal(intersects(c0, c1, opts), expect, `${c0} intersects ${c1}`)
t.equal(intersects(c1, c0, opts), expect, `${c1} intersects ${c0}`)
opts.loose = true
t.equal(intersects(comp0, comp1, opts), expect, `${c0} intersects ${c1} loose, objects`)
t.equal(intersects(comp1, comp0, opts), expect, `${c1} intersects ${c0} loose, objects`)
t.equal(intersects(c0, c1, opts), expect, `${c0} intersects ${c1} loose`)
t.equal(intersects(c1, c0, opts), expect, `${c1} intersects ${c0} loose`)
t.end()
}))
})
test('ranges intersect', (t) => {
rangeIntersection.forEach(([r0, r1, expect]) => {
t.test(`${r0} <~> ${r1}`, t => {
const range0 = new Range(r0)
const range1 = new Range(r1)
t.equal(intersects(r1, r0), expect, `${r0} <~> ${r1}`)
t.equal(intersects(r0, r1), expect, `${r1} <~> ${r0}`)
t.equal(intersects(r1, r0, true), expect, `${r0} <~> ${r1} loose`)
t.equal(intersects(r0, r1, true), expect, `${r1} <~> ${r0} loose`)
t.equal(intersects(range0, range1), expect, `${r0} <~> ${r1} objects`)
t.equal(intersects(range1, range0), expect, `${r1} <~> ${r0} objects`)
t.equal(intersects(range0, range1, true), expect,
`${r0} <~> ${r1} objects loose`)
t.equal(intersects(range1, range0, true), expect,
`${r1} <~> ${r0} objects loose`)
t.end()
})
})
t.end()
})
test('missing comparator parameter in intersect comparators', (t) => {
t.throws(() => {
new Comparator('>1.0.0').intersects()
}, new TypeError('a Comparator is required'),
'throws type error')
t.end()
})