Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
AbstractMinMaxRule
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
1 / 1
7
100.00% covered (success)
100.00%
1 / 1
 symbol
n/a
0 / 0
n/a
0 / 0
0
 comparisonString
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
1 / 1
7
1<?php
2
3declare(strict_types=1);
4
5namespace WsdlToPhp\PackageGenerator\File\Validation;
6
7abstract class AbstractMinMaxRule extends AbstractRule
8{
9    public const SYMBOL_MAX_INCLUSIVE = '>';
10    public const SYMBOL_MAX_EXCLUSIVE = '>=';
11    public const SYMBOL_MIN_INCLUSIVE = '<';
12    public const SYMBOL_MIN_EXCLUSIVE = '<=';
13    public const SYMBOL_STRICT = '!==';
14
15    /**
16     * Must return the comparison symbol.
17     */
18    abstract public function symbol(): string;
19
20    /**
21     * @throws \InvalidArgumentException
22     */
23    final public function comparisonString(): string
24    {
25        switch ($this->symbol()) {
26            case self::SYMBOL_MAX_INCLUSIVE:
27                $comparison = 'less than or equal to';
28
29                break;
30
31            case self::SYMBOL_MIN_INCLUSIVE:
32                $comparison = 'greater than or equal to';
33
34                break;
35
36            case self::SYMBOL_MIN_EXCLUSIVE:
37                $comparison = 'greater than';
38
39                break;
40
41            case self::SYMBOL_MAX_EXCLUSIVE:
42                $comparison = 'less than';
43
44                break;
45
46            case self::SYMBOL_STRICT:
47                $comparison = 'equal to';
48
49                break;
50
51            default:
52                throw new \InvalidArgumentException(sprintf('Invalid value %s returned by symbol() method, can\'t determine comparison string', $this->symbol()));
53        }
54
55        return $comparison;
56    }
57}