Passed
Push — feature/issue-168 ( a16e5d...f01c3b )
by Mikaël
06:47
created

AbstractMinMaxRule::comparisonString()   B

Complexity

Conditions 6
Paths 6

Size

Total Lines 23
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 20
nc 6
nop 0
dl 0
loc 23
rs 8.9777
c 0
b 0
f 0
1
<?php
2
3
4
namespace WsdlToPhp\PackageGenerator\File\Validation;
5
6
abstract class AbstractMinMaxRule extends AbstractRule
7
{
8
9
    /**
10
     * Symbol to use for max rule
11
     * @var string
12
     */
13
    const SYMBOL_MAX_INCLUSIVE = '>';
14
15
    /**
16
     * Symbol to use for max exclusive rule
17
     * @var string
18
     */
19
    const SYMBOL_MAX_EXCLUSIVE = '>=';
20
21
    /**
22
     * Symbol to use for min rule
23
     * @var string
24
     */
25
    const SYMBOL_MIN_INCLUSIVE = '<';
26
27
    /**
28
     * Symbol to use for min exclusive rule
29
     * @var string
30
     */
31
    const SYMBOL_MIN_EXCLUSIVE = '<=';
32
33
    /**
34
     * Symbol to use for strict rule
35
     * @var string
36
     */
37
    const SYMBOL_STRICT = '!==';
38
39
    /**
40
     * Must return the comparison symbol
41
     * @return string
42
     */
43
    abstract public static function symbol();
44
45
    /**
46
     * @return string
47
     */
48
    final public static function comparisonString()
49
    {
50
        switch (static::symbol()) {
51
            case self::SYMBOL_MAX_INCLUSIVE:
52
                $comparison = 'less than or equal to';
53
                break;
54
            case self::SYMBOL_MIN_INCLUSIVE:
55
                $comparison = 'greater than or equal to';
56
                break;
57
            case self::SYMBOL_MIN_EXCLUSIVE:
58
                $comparison = 'greater than';
59
                break;
60
            case self::SYMBOL_MAX_EXCLUSIVE:
61
                $comparison = 'less than';
62
                break;
63
            case self::SYMBOL_STRICT:
64
                $comparison = 'equal to';
65
                break;
66
            default:
67
                throw new \InvalidArgumentException(sprintf('Invalid value %s returned by static::symbol(), can\'t determine comparison string', static::symbol()));
68
                break;
69
        }
70
        return $comparison;
71
    }
72
}
73