compare = new CompareVersion(); } public function comparisonData() { return [ // Compatible versions ['13.0.0.3', '13.0.0', '>=', true], ['13.0.0.3', '13.0.0', '<=', true], ['13.0.0', '13.0.0', '>=', true], ['13.0.0', '13.0', '<=', true], ['13.0.0', '13', '>=', true], ['13.0.1', '13', '>=', true], ['13.0.1', '13', '<=', true], ['13.0.1.9', '13', '<=', true], ['13.0.1-beta.1', '13', '<=', true], ['7.4.14', '7.4', '<=', true], ['7.4.14-ubuntu', '7.4', '<=', true], ['7.4.14-ubuntu', '7.4.15', '<=', true], ['7.4.16-ubuntu', '7.4.15', '<=', false], // Incompatible major versions ['13.0.0.3', '13.0.0', '<', false], ['12.0.0', '13.0.0', '>=', false], ['12.0.0', '13.0', '>=', false], ['12.0.0', '13', '>=', false], ['7.4.15-ubuntu', '7.4.15', '>=', true], // Incompatible minor and patch versions ['13.0.0', '13.0.1', '>=', false], ['13.0.0', '13.1', '>=', false], // Compatible minor and patch versions ['13.0.1', '13.0.0', '>=', true], ['13.2.0', '13.1', '>=', true], ]; } /** * @dataProvider comparisonData */ public function testComparison(string $actualVersion, string $requiredVersion, string $comparator, bool $expected): void { $isCompatible = $this->compare->isCompatible($actualVersion, $requiredVersion, $comparator); $this->assertEquals($expected, $isCompatible); } public function testInvalidServerVersion(): void { $actualVersion = '13'; $this->expectException(InvalidArgumentException::class); $this->compare->isCompatible($actualVersion, '13.0.0'); } public function testInvalidRequiredVersion(): void { $actualVersion = '13.0.0'; $this->expectException(InvalidArgumentException::class); $this->compare->isCompatible($actualVersion, '13.0.0.9'); } }