Skip to content

Commit e8fcb14

Browse files
committed
Introduce type matcher
1 parent c19a988 commit e8fcb14

File tree

3 files changed

+34
-18
lines changed

3 files changed

+34
-18
lines changed

src/JsonMatcher/Matcher/TypeMatcher.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public function match($value, $pattern)
1515

1616
public function canMatch($pattern)
1717
{
18-
return is_scalar($pattern);
18+
return 0 !== preg_match("/^@(string|integer|boolean|double)@$/", $pattern);
1919
}
2020

2121
private function extractType($pattern)

tests/JsonMatcher/PlaceholderMatcherTest.php

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
namespace JsonMatcher\Tests;
3+
4+
use JsonMatcher\Matcher\TypeMatcher;
5+
6+
class TypeMatcherTest extends \PHPUnit_Framework_TestCase
7+
{
8+
public function test_can_match()
9+
{
10+
$matcher = new TypeMatcher();
11+
$this->assertTrue($matcher->canMatch('@integer@'));
12+
$this->assertTrue($matcher->canMatch('@string@'));
13+
$this->assertTrue($matcher->canMatch('@boolean@'));
14+
$this->assertFalse($matcher->canMatch('@integer'));
15+
$this->assertFalse($matcher->canMatch("qweqwe"));
16+
$this->assertFalse($matcher->canMatch(1));
17+
$this->assertFalse($matcher->canMatch("@string"));
18+
}
19+
20+
public function test_type_match()
21+
{
22+
$matcher = new TypeMatcher();
23+
$this->assertTrue($matcher->match(false, '@boolean@'));
24+
$this->assertTrue($matcher->match("Norbert", '@string@'));
25+
$this->assertTrue($matcher->match(1, '@integer@'));
26+
$this->assertTrue($matcher->match(1.1, '@double@'));
27+
28+
$this->assertFalse($matcher->match("test", '@boolean@'));
29+
$this->assertFalse($matcher->match(new \stdClass(), '@string@'));
30+
$this->assertFalse($matcher->match(1.1, '@integer@'));
31+
$this->assertFalse($matcher->match(false, '@double@'));
32+
}
33+
}

0 commit comments

Comments
 (0)