Skip to content

Commit 8441900

Browse files
committed
Add test that ensures optional param matching behavior.
1 parent 466154c commit 8441900

5 files changed

Lines changed: 23 additions & 4 deletions

File tree

src/Data/Maybe/Maybe.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
namespace Vector\Data\Maybe;
44

55
use Vector\Core\Module;
6+
use Vector\Typeclass\MonadInterface;
67
use Vector\Typeclass\SimpleApplicativeDefault;
78
use Vector\Typeclass\SimpleFunctorDefault;
89
use Vector\Typeclass\SimpleMonadDefault;
9-
use Vector\Typeclass\MonadInterface;
1010

1111
/**
1212
* @method static callable just($value)

src/Data/Result/Result.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
use Exception;
66
use Vector\Core\Module;
7+
use Vector\Typeclass\MonadInterface;
78
use Vector\Typeclass\SimpleApplicativeDefault;
89
use Vector\Typeclass\SimpleFunctorDefault;
910
use Vector\Typeclass\SimpleMonadDefault;
10-
use Vector\Typeclass\MonadInterface;
1111

1212
/**
1313
* @method static callable ok($value)

tests/Control/PatternTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,25 @@ public function it_can_match_arity_on_custom_objects()
178178
$this->assertEquals('ok', $match(new TestObject(), new TestObject()));
179179
}
180180

181+
/** @test */
182+
public function it_uses_first_match_arity_on_optional_params()
183+
{
184+
$matchTest1 = Pattern::match([
185+
fn (TestObject $object) => 'first',
186+
fn (TestObject $object, ?TestObject $object2) => 'second',
187+
fn (TestObject $object, TestObject $object2 = null) => 'third',
188+
]);
189+
190+
$matchTest2 = Pattern::match([
191+
fn (TestObject $object) => 'first',
192+
fn (TestObject $object, TestObject $object2 = null) => 'second',
193+
fn (TestObject $object, TestObject $object2) => 'third',
194+
]);
195+
196+
$this->assertEquals('second', $matchTest1(new TestObject(), new TestObject()));
197+
$this->assertEquals('second', $matchTest2(new TestObject(), new TestObject()));
198+
}
199+
181200
/** @test */
182201
function throws_on_no_matching_pattern()
183202
{

tests/Core/ModuleTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
namespace Vector\Test\Core;
44

55
use PHPUnit\Framework\TestCase;
6-
use Vector\Core\Module;
76
use Vector\Core\Exception\FunctionNotFoundException;
7+
use Vector\Core\Module;
88
use Vector\Test\Core\Stub\TestFunctions;
99

1010
class ModuleTest extends TestCase

tests/Lib/ArraysTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
namespace Vector\Test\Lib;
44

55
use PHPUnit\Framework\TestCase;
6+
use Vector\Core\Exception\ElementNotFoundException;
67
use Vector\Core\Exception\EmptyListException;
78
use Vector\Core\Exception\IndexOutOfBoundsException;
8-
use Vector\Core\Exception\ElementNotFoundException;
99
use Vector\Lib\Arrays;
1010

1111
class ArraysTest extends TestCase

0 commit comments

Comments
 (0)