'use strict'; const { test, given } = require('sazerac'); const { compare, minorVersion, versionReduction } = require('./php-version'); const phpReleases = ['5.0', '5.1', '5.2', '5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2']; describe('Text PHP version', function() { test(minorVersion, () => { given('7').expect('7.0'); given('7.1').expect('7.1'); given('5.3.3').expect('5.3'); given('hhvm').expect(''); }); test(versionReduction, () => { given(['5.3', '5.4', '5.5'], phpReleases).expect('5.3 - 5.5'); given(['5.4', '5.5', '5.6', '7.0', '7.1'], phpReleases).expect('5.4 - 7.1'); given(['5.5', '5.6', '7.0', '7.1', '7.2'], phpReleases).expect('>= 5.5'); given(['5.5', '5.6', '7.1', '7.2'], phpReleases).expect('5.5, 5.6, 7.1, 7.2'); given(['7.0', '7.1', '7.2'], phpReleases).expect('>= 7'); given(['5.0', '5.1', '5.2', '5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2'], phpReleases).expect('>= 5'); given(['7.1', '7.2'], phpReleases).expect('>= 7.1'); given(['7.1'], phpReleases).expect('7.1'); given(['8.1'], phpReleases).expect(''); given([]).expect(''); }); }); describe('Composer version comparison', function() { test(compare, () => { // composer version scheme ordering given('0.9.0', '1.0.0-alpha').expect(-1); given('1.0.0-alpha', '1.0.0-alpha2').expect(-1); given('1.0.0-alpha2', '1.0.0-beta').expect(-1); given('1.0.0-beta', '1.0.0-beta2').expect(-1); given('1.0.0-beta2', '1.0.0-RC').expect(-1); given('1.0.0-RC', '1.0.0-RC2').expect(-1); given('1.0.0-RC2', '1.0.0').expect(-1); given('1.0.0', '1.0.0-patch').expect(-1); given('1.0.0-patch', '1.0.0-dev').expect(-1); given('1.0.0-dev', '1.0.1').expect(-1); given('1.0.1', '1.0.x-dev').expect(-1); // short versions should compare equal to long versions given('1.0.0-p', '1.0.0-patch').expect(0); given('1.0.0-a', '1.0.0-alpha').expect(0); given('1.0.0-a2', '1.0.0-alpha2').expect(0); given('1.0.0-b', '1.0.0-beta').expect(0); given('1.0.0-b2', '1.0.0-beta2').expect(0); // numeric suffixes given('1.0.0-b1', '1.0.0-b2').expect(-1); given('1.0.0-b10', '1.0.0-b11').expect(-1); given('1.0.0-a1', '1.0.0-a2').expect(-1); given('1.0.0-a10', '1.0.0-a11').expect(-1); given('1.0.0-RC1', '1.0.0-RC2').expect(-1); given('1.0.0-RC10', '1.0.0-RC11').expect(-1); }); });