Skip to content

Commit

Permalink
Introduce type matcher
Browse files Browse the repository at this point in the history
  • Loading branch information
norberttech committed Apr 15, 2014
1 parent c19a988 commit e8fcb14
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/JsonMatcher/Matcher/TypeMatcher.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public function match($value, $pattern)

public function canMatch($pattern)
{
return is_scalar($pattern);
return 0 !== preg_match("/^@(string|integer|boolean|double)@$/", $pattern);
}

private function extractType($pattern)
Expand Down
17 changes: 0 additions & 17 deletions tests/JsonMatcher/PlaceholderMatcherTest.php

This file was deleted.

33 changes: 33 additions & 0 deletions tests/JsonMatcher/TypeMatcherTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php
namespace JsonMatcher\Tests;

use JsonMatcher\Matcher\TypeMatcher;

class TypeMatcherTest extends \PHPUnit_Framework_TestCase
{
public function test_can_match()
{
$matcher = new TypeMatcher();
$this->assertTrue($matcher->canMatch('@integer@'));
$this->assertTrue($matcher->canMatch('@string@'));
$this->assertTrue($matcher->canMatch('@boolean@'));
$this->assertFalse($matcher->canMatch('@integer'));
$this->assertFalse($matcher->canMatch("qweqwe"));
$this->assertFalse($matcher->canMatch(1));
$this->assertFalse($matcher->canMatch("@string"));
}

public function test_type_match()
{
$matcher = new TypeMatcher();
$this->assertTrue($matcher->match(false, '@boolean@'));
$this->assertTrue($matcher->match("Norbert", '@string@'));
$this->assertTrue($matcher->match(1, '@integer@'));
$this->assertTrue($matcher->match(1.1, '@double@'));

$this->assertFalse($matcher->match("test", '@boolean@'));
$this->assertFalse($matcher->match(new \stdClass(), '@string@'));
$this->assertFalse($matcher->match(1.1, '@integer@'));
$this->assertFalse($matcher->match(false, '@double@'));
}
}

0 comments on commit e8fcb14

Please sign in to comment.