Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
namespace Hamcrest\Number;
3
 
4
/*
5
 Copyright (c) 2009 hamcrest.org
6
 */
7
use Hamcrest\Description;
8
use Hamcrest\TypeSafeMatcher;
9
 
10
/**
11
 * Is the value a number equal to a value within some range of
12
 * acceptable error?
13
 */
14
class IsCloseTo extends TypeSafeMatcher
15
{
16
 
17
    private $_value;
18
    private $_delta;
19
 
20
    public function __construct($value, $delta)
21
    {
22
        parent::__construct(self::TYPE_NUMERIC);
23
 
24
        $this->_value = $value;
25
        $this->_delta = $delta;
26
    }
27
 
28
    protected function matchesSafely($item)
29
    {
30
        return $this->_actualDelta($item) <= 0.0;
31
    }
32
 
33
    protected function describeMismatchSafely($item, Description $mismatchDescription)
34
    {
35
        $mismatchDescription->appendValue($item)
36
                                                ->appendText(' differed by ')
37
                                                ->appendValue($this->_actualDelta($item))
38
                                                ;
39
    }
40
 
41
    public function describeTo(Description $description)
42
    {
43
        $description->appendText('a numeric value within ')
44
                                ->appendValue($this->_delta)
45
                                ->appendText(' of ')
46
                                ->appendValue($this->_value)
47
                                ;
48
    }
49
 
50
    /**
51
     * Matches if value is a number equal to $value within some range of
52
     * acceptable error $delta.
53
     *
54
     * @factory
55
     */
56
    public static function closeTo($value, $delta)
57
    {
58
        return new self($value, $delta);
59
    }
60
 
61
    // -- Private Methods
62
 
63
    private function _actualDelta($item)
64
    {
65
        return (abs(($item - $this->_value)) - $this->_delta);
66
    }
67
}