BlockStateUpgraderTest: fixed tests for 7ff0ae19d65e3b3029246b51de0e361cee6a1a01

This commit is contained in:
Dylan K. Taylor 2024-03-13 18:35:07 +00:00
parent 7ff0ae19d6
commit 8d7f1a8557
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -47,11 +47,11 @@ class BlockStateUpgraderTest extends TestCase{
} }
private function getNewSchema() : BlockStateUpgradeSchema{ private function getNewSchema() : BlockStateUpgradeSchema{
return $this->getNewSchemaVersion(PHP_INT_MAX); return $this->getNewSchemaVersion(PHP_INT_MAX, 0);
} }
private function getNewSchemaVersion(int $versionId) : BlockStateUpgradeSchema{ private function getNewSchemaVersion(int $versionId, int $schemaId) : BlockStateUpgradeSchema{
$schema = new BlockStateUpgradeSchema(($versionId >> 24) & 0xff, ($versionId >> 16) & 0xff, ($versionId >> 8) & 0xff, $versionId & 0xff, 0); $schema = new BlockStateUpgradeSchema(($versionId >> 24) & 0xff, ($versionId >> 16) & 0xff, ($versionId >> 8) & 0xff, $versionId & 0xff, $schemaId);
$this->upgrader->addSchema($schema); $this->upgrader->addSchema($schema);
return $schema; return $schema;
} }
@ -211,20 +211,23 @@ class BlockStateUpgraderTest extends TestCase{
} }
/** /**
* @phpstan-return \Generator<int, array{int, int, bool}, void, void> * @phpstan-return \Generator<int, array{int, int, bool, int}, void, void>
*/ */
public static function upgraderVersionCompatibilityProvider() : \Generator{ public static function upgraderVersionCompatibilityProvider() : \Generator{
yield [0x1_00_00_00, 0x1_00_00_00, true]; //Same version: must be altered - this may be a backwards-compatible change that Mojang didn't bother to bump for yield [0x1_00_00_00, 0x1_00_00_00, true, 2]; //Same version, multiple schemas targeting version - must be altered, we don't know which schemas are applicable
yield [0x1_00_01_00, 0x1_00_00_00, true]; //Schema newer than block: must be altered yield [0x1_00_00_00, 0x1_00_00_00, false, 1]; //Same version, one schema targeting version - do not change
yield [0x1_00_00_00, 0x1_00_01_00, false]; //Block newer than schema: block must NOT be altered yield [0x1_00_01_00, 0x1_00_00_00, true, 1]; //Schema newer than block: must be altered
yield [0x1_00_00_00, 0x1_00_01_00, false, 1]; //Block newer than schema: block must NOT be altered
} }
/** /**
* @dataProvider upgraderVersionCompatibilityProvider * @dataProvider upgraderVersionCompatibilityProvider
*/ */
public function testUpgraderVersionCompatibility(int $schemaVersion, int $stateVersion, bool $shouldChange) : void{ public function testUpgraderVersionCompatibility(int $schemaVersion, int $stateVersion, bool $shouldChange, int $schemaCount) : void{
$schema = $this->getNewSchemaVersion($schemaVersion); for($i = 0; $i < $schemaCount; $i++){
$schema->renamedIds[self::TEST_BLOCK] = self::TEST_BLOCK_2; $schema = $this->getNewSchemaVersion($schemaVersion, $i);
$schema->renamedIds[self::TEST_BLOCK] = self::TEST_BLOCK_2;
}
$getStateData = fn() => new BlockStateData( $getStateData = fn() => new BlockStateData(
self::TEST_BLOCK, self::TEST_BLOCK,