Skip to content

Commit

Permalink
Add missing test for callbacks returning non-booleans
Browse files Browse the repository at this point in the history
Includes switching out all tests in CallbackComparerTest to something
less weird.
  • Loading branch information
JeroenDeDauw committed Sep 12, 2018
1 parent 89bbd22 commit 2d73a42
Showing 1 changed file with 29 additions and 29 deletions.
58 changes: 29 additions & 29 deletions tests/unit/Comparer/CallbackComparerTest.php
Expand Up @@ -18,45 +18,45 @@
*/
class CallbackComparerTest extends DiffTestCase {

private function newComparerInstance() {
return new CallbackComparer( function( $firstValue, $secondValue ) {
return $firstValue === 1 || $firstValue === $secondValue;
public function testWhenCallbackReturnsTrue_valuesAreEqual() {
$comparer = new CallbackComparer( function() {
return true;
} );

$this->assertTrue( $comparer->valuesAreEqual( null, null ) );
}

/**
* @dataProvider equalProvider
*/
public function testEqualValuesAreEqual( $firstValue, $secondValue ) {
$comparer = $this->newComparerInstance();
public function testWhenCallbackReturnsFalse_valuesAreNotEqual() {
$comparer = new CallbackComparer( function() {
return false;
} );

$this->assertTrue( $comparer->valuesAreEqual( $firstValue, $secondValue ) );
$this->assertFalse( $comparer->valuesAreEqual( null, null ) );
}

public function equalProvider() {
return array(
array( 1, 0 ),
array( 1, 1 ),
array( 1, 2 ),
array( 2, 2 ),
);
public function testWhenCallbackReturnsNonBoolean_exceptionIsThrown() {
$comparer = new CallbackComparer( function() {
return null;
} );

$this->expectException( \RuntimeException::class );
$comparer->valuesAreEqual( null, null );
}

/**
* @dataProvider unequalProvider
*/
public function testDifferentValuesAreNotEqual( $firstValue, $secondValue ) {
$comparer = $this->newComparerInstance();
public function testCallbackIsGivenArguments() {
$firstArgument = null;
$secondArgument = null;

$this->assertFalse( $comparer->valuesAreEqual( $firstValue, $secondValue ) );
}
$comparer = new CallbackComparer( function( $a, $b ) use ( &$firstArgument, &$secondArgument ) {
$firstArgument = $a;
$secondArgument = $b;
return true;
} );

$comparer->valuesAreEqual( 42, 23 );

public function unequalProvider() {
return array(
array( 0, 1 ),
array( 0, 2 ),
array( 0, '0' ),
);
$this->assertSame( 42, $firstArgument );
$this->assertSame( 23, $secondArgument );
}

}

0 comments on commit 2d73a42

Please sign in to comment.