|
1 | 1 | const t = require('tap')
|
2 | 2 | const subset = require('../../ranges/subset.js')
|
| 3 | +const Range = require('../../classes/range') |
3 | 4 |
|
4 | 5 | // sub, dom, expect, [options]
|
5 | 6 | const cases = [
|
6 | 7 | ['1.2.3', '1.2.3', true],
|
| 8 | + ['1.2.3', '1.x', true], |
7 | 9 | ['1.2.3 1.2.4', '1.2.3', true],
|
| 10 | + ['1.2.3 1.2.4', '1.2.9', true], // null set is subset of everything |
| 11 | + ['1.2.3', '>1.2.0', true], |
8 | 12 | ['1.2.3 2.3.4 || 2.3.4', '3', false],
|
9 | 13 | ['^1.2.3-pre.0', '1.x', false],
|
10 | 14 | ['^1.2.3-pre.0', '1.x', true, { includePrerelease: true }],
|
@@ -65,11 +69,45 @@ const cases = [
|
65 | 69 | ['<=3 <=2 <=1', '<4', true],
|
66 | 70 | ['>=1 >=2 >=3', '>0', true],
|
67 | 71 | ['>=3 >=2 >=1', '>0', true],
|
| 72 | + ['>=3 >=2 >=1', '>=3 >=2 >=1', true], |
| 73 | + ['>2.0.0', '>=2.0.0', true], |
68 | 74 | ]
|
69 | 75 |
|
70 |
| -t.plan(cases.length) |
| 76 | + |
| 77 | +t.plan(cases.length + 1) |
71 | 78 | cases.forEach(([sub, dom, expect, options = {}]) => {
|
72 | 79 | const msg = `${sub || "''"} ⊂ ${dom || "''"} = ${expect}` +
|
73 | 80 | (options ? ' ' + Object.keys(options).join(',') : '')
|
74 | 81 | t.equal(subset(sub, dom, options), expect, msg)
|
75 | 82 | })
|
| 83 | + |
| 84 | +t.test('range should be subset of itself in obj or string mode', t => { |
| 85 | + const range = '^1' |
| 86 | + t.equal(subset(range, range), true) |
| 87 | + t.equal(subset(range, new Range(range)), true) |
| 88 | + t.equal(subset(new Range(range), range), true) |
| 89 | + t.equal(subset(new Range(range), new Range(range)), true) |
| 90 | + |
| 91 | + // test with using the same actual object |
| 92 | + const r = new Range(range) |
| 93 | + t.equal(subset(r, r), true) |
| 94 | + |
| 95 | + // different range object with same set array |
| 96 | + const r2 = new Range(range) |
| 97 | + r2.set = r.set |
| 98 | + t.equal(subset(r2, r), true) |
| 99 | + t.equal(subset(r, r2), true) |
| 100 | + |
| 101 | + // different range with set with same simple set arrays |
| 102 | + const r3 = new Range(range) |
| 103 | + r3.set = [...r.set] |
| 104 | + t.equal(subset(r3, r), true) |
| 105 | + t.equal(subset(r, r3), true) |
| 106 | + |
| 107 | + // different range with set with simple sets with same comp objects |
| 108 | + const r4 = new Range(range) |
| 109 | + r4.set = r.set.map(s => [...s]) |
| 110 | + t.equal(subset(r4, r), true) |
| 111 | + t.equal(subset(r, r4), true) |
| 112 | + t.end() |
| 113 | +}) |
0 commit comments