*/ public function compatibleApiProvider() : \Generator{ yield ["3.0.0", "3.0.0", true]; yield ["3.1.0", "3.0.0", true]; yield ["3.0.0", "3.1.0", false]; yield ["3.1.0", "3.0.1", true]; //old bug where minor wasn't respected when comparing patches yield ["3.0.0", "4.0.0", false]; yield ["4.0.0", "3.0.0", false]; yield ["3.0.0", "3.0.1", false]; //bug fix patch required yield ["3.0.1", "3.0.0", true]; yield ["3.0.0-ALPHA1", "3.0.0-ALPHA2", false]; yield ["3.0.0-ALPHA2", "3.0.0-ALPHA1", false]; yield ["3.0.0-ALPHA1", "3.0.0-ALPHA1", true]; yield ["3.0.0-ALPHA1", "4.0.0-ALPHA1", false]; } /** * @dataProvider compatibleApiProvider */ public function testCompatibleApi(string $myVersion, string $wantVersion, bool $expected) : void{ self::assertSame($expected, ApiVersion::isCompatible($myVersion, [$wantVersion]), "my version: $myVersion, their version: $wantVersion, expect " . ($expected ? "yes" : "no")); } /** * @return mixed[][][] * @phpstan-return \Generator, list}, void, void> */ public function ambiguousVersionsProvider() : \Generator{ yield [["3.0.0"], []]; yield [["3.0.0", "3.0.1"], ["3.0.0", "3.0.1"]]; yield [["3.0.0", "3.1.0", "4.0.0"], ["3.0.0", "3.1.0"]]; yield [["3.0.0", "4.0.0"], []]; yield [["3.0.0-ALPHA1", "3.0.0-ALPHA2"], []]; } /** * @dataProvider ambiguousVersionsProvider * * @param string[] $input * @param string[] $expectedOutput */ public function testFindAmbiguousVersions(array $input, array $expectedOutput) : void{ $ambiguous = ApiVersion::checkAmbiguousVersions($input); sort($expectedOutput); sort($ambiguous); self::assertSame($expectedOutput, $ambiguous); } }