Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
10 / 10
CRAP
100.00% covered (success)
100.00%
24 / 24
UnexpectedDataException
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
10 / 10
13
100.00% covered (success)
100.00%
24 / 24
 __construct
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
11 / 11
 getExpectation
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 setExpectation
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 getExpected
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 setExpected
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 getActual
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 setActual
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 hasAt
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
1 / 1
 getAt
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
1 / 1
 setAt
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
<?php
/**
 * Copyright (c) Tony Bogdanov <tonybogdanov@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace DataExpectation\Exceptions;
use DataExpectation\ExpectationInterface;
/**
 * Class UnexpectedDataException
 *
 * @package DataExpectation\Exceptions
 * @author Tony Bogdanov <tonybogdanov@gmail.com>
 */
class UnexpectedDataException extends AbstractException {
    /**
     * @var ExpectationInterface
     */
    protected $expectation;
    /**
     * @var string
     */
    protected $expected;
    /**
     * @var string
     */
    protected $actual;
    /**
     * @var string|null
     */
    protected $at;
    /**
     * UnexpectedDataException constructor.
     *
     * @param $data
     * @param ExpectationInterface $expectation
     * @param string|null $path
     * @param \Throwable|null $previous
     */
    public function __construct(
        $data,
        ExpectationInterface $expectation,
        string $path = null,
        \Throwable $previous = null
    ) {
        $this
            ->setExpectation( $expectation )
            ->setExpected( $this->getExpectation()->getType() )
            ->setActual( $this->format( $data ) )
            ->setAt( $path );
        parent::__construct( sprintf(
            "Unexpected data: %1\$s\n\nviolates expectation: %2\$s%3\$s.",
            $this->getActual(),
            $this->getExpected(),
            $this->hasAt() ? sprintf( "\nat: %1\$s", $this->getAt() ) : '',
        ), 0, $previous );
    }
    /**
     * @return ExpectationInterface
     */
    public function getExpectation(): ExpectationInterface {
        return $this->expectation;
    }
    /**
     * @param ExpectationInterface $expectation
     *
     * @return $this
     */
    public function setExpectation( ExpectationInterface $expectation ) {
        $this->expectation = $expectation;
        return $this;
    }
    /**
     * @return string
     */
    public function getExpected(): string {
        return $this->expected;
    }
    /**
     * @param string $expected
     *
     * @return $this
     */
    public function setExpected( string $expected ) {
        $this->expected = $expected;
        return $this;
    }
    /**
     * @return string
     */
    public function getActual(): string {
        return $this->actual;
    }
    /**
     * @param string $actual
     *
     * @return $this
     */
    public function setActual( string $actual ) {
        $this->actual = $actual;
        return $this;
    }
    /**
     * @return bool
     */
    public function hasAt(): bool {
        return isset( $this->at ) && '' !== $this->at;
    }
    /**
     * @return string|null
     */
    public function getAt(): ?string {
        return $this->at;
    }
    /**
     * @param string|null $at
     *
     * @return $this
     */
    public function setAt( string $at = null ) {
        $this->at = $at;
        return $this;
    }
}