PageRenderTime 24ms CodeModel.GetById 11ms app.highlight 7ms RepoModel.GetById 2ms app.codeStats 0ms

/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php

https://bitbucket.org/alan_cordova/api-sb-map
PHP | 118 lines | 56 code | 17 blank | 45 comment | 5 complexity | c38ae0be3e48b3b60ef97ac2fac91f2f MD5 | raw file
  1<?php
  2/*
  3 * This file is part of PHPUnit.
  4 *
  5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
  6 *
  7 * For the full copyright and license information, please view the LICENSE
  8 * file that was distributed with this source code.
  9 */
 10
 11/**
 12 * Logical XOR.
 13 */
 14class PHPUnit_Framework_Constraint_Xor extends PHPUnit_Framework_Constraint
 15{
 16    /**
 17     * @var PHPUnit_Framework_Constraint[]
 18     */
 19    protected $constraints = [];
 20
 21    /**
 22     * @param PHPUnit_Framework_Constraint[] $constraints
 23     */
 24    public function setConstraints(array $constraints)
 25    {
 26        $this->constraints = [];
 27
 28        foreach ($constraints as $constraint) {
 29            if (!($constraint instanceof PHPUnit_Framework_Constraint)) {
 30                $constraint = new PHPUnit_Framework_Constraint_IsEqual(
 31                    $constraint
 32                );
 33            }
 34
 35            $this->constraints[] = $constraint;
 36        }
 37    }
 38
 39    /**
 40     * Evaluates the constraint for parameter $other
 41     *
 42     * If $returnResult is set to false (the default), an exception is thrown
 43     * in case of a failure. null is returned otherwise.
 44     *
 45     * If $returnResult is true, the result of the evaluation is returned as
 46     * a boolean value instead: true in case of success, false in case of a
 47     * failure.
 48     *
 49     * @param mixed  $other        Value or object to evaluate.
 50     * @param string $description  Additional information about the test
 51     * @param bool   $returnResult Whether to return a result or throw an exception
 52     *
 53     * @return mixed
 54     *
 55     * @throws PHPUnit_Framework_ExpectationFailedException
 56     */
 57    public function evaluate($other, $description = '', $returnResult = false)
 58    {
 59        $success    = true;
 60        $lastResult = null;
 61        $constraint = null;
 62
 63        foreach ($this->constraints as $constraint) {
 64            $result = $constraint->evaluate($other, $description, true);
 65
 66            if ($result === $lastResult) {
 67                $success = false;
 68                break;
 69            }
 70
 71            $lastResult = $result;
 72        }
 73
 74        if ($returnResult) {
 75            return $success;
 76        }
 77
 78        if (!$success) {
 79            $this->fail($other, $description);
 80        }
 81    }
 82
 83    /**
 84     * Returns a string representation of the constraint.
 85     *
 86     * @return string
 87     */
 88    public function toString()
 89    {
 90        $text = '';
 91
 92        foreach ($this->constraints as $key => $constraint) {
 93            if ($key > 0) {
 94                $text .= ' xor ';
 95            }
 96
 97            $text .= $constraint->toString();
 98        }
 99
100        return $text;
101    }
102
103    /**
104     * Counts the number of constraint elements.
105     *
106     * @return int
107     */
108    public function count()
109    {
110        $count = 0;
111
112        foreach ($this->constraints as $constraint) {
113            $count += count($constraint);
114        }
115
116        return $count;
117    }
118}