/** * @coverage VersionComponent::isNull * @coverage VersionComponent::isNotNull * @coverage VersionComponent::isDefault * @coverage VersionComponent::isNotDefault * @dataProvider nullOrDefaultStatesProvider */ public function testCanCheckIfVersionComponentIsInDefaultOrNullState($expected, VersionComponent $versionComponent) { static $format = '$versionComponent->{method}(); // {actual}'; $actuals['isDefault'] = $versionComponent->isDefault(); $actuals['isNotDefault'] = $versionComponent->isNotDefault(); $actuals['isNull'] = $versionComponent->isNull(); $actuals['isNotNull'] = $versionComponent->isNotNull(); $messages = []; foreach ($actuals as $method => $actual) { $messages[$method] = String::format($format, ['method' => $method, 'actual' => static::export($actual)]); } foreach ($actuals as $method => $actual) { // Pre-tests for returning type $this->assertInternalType('boolean', $actual, $messages[$method] . ' # Should return a boolean #'); } // Pre-tests for different values $this->assertNotEquals($actuals['isDefault'], $actuals['isNotDefault'], $messages['isDefault'] . PHP_EOL . $messages['isNotDefault']); $this->assertNotEquals($actuals['isNull'], $actuals['isNotNull'], $messages['isNull'] . PHP_EOL . $messages['isNotNull']); // Test expected if ($expected === 'default') { $this->assertTrue($actuals['isDefault'], $messages['isDefault']); // Can't be null AND default $this->assertNotEquals($actuals['isNull'], $actuals['isDefault'], '#Can\'t be both, DEFAULT and NULL, at the same time' . PHP_EOL . $messages['isDefault'] . PHP_EOL . $messages['isNull']); } elseif ($expected === 'null') { $this->assertTrue($actuals['isNull'], $messages['isNull']); // Can't be null AND default $this->assertNotEquals($actuals['isNull'], $actuals['isDefault'], '#Can\'t be both, NULL and DEFAULT, at the same time' . PHP_EOL . $messages['isNull'] . PHP_EOL . $messages['isDefault']); } else { $this->assertTrue($actuals['isNotDefault'], $messages['isNotDefault']); $this->assertTrue($actuals['isNotNull'], $messages['isNotNull']); } }