Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
47.37% covered (danger)
47.37%
9 / 19
50.00% covered (danger)
50.00%
3 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
IntegerOption
47.37% covered (danger)
47.37%
9 / 19
50.00% covered (danger)
50.00%
3 / 6
24.58
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 checkMin
25.00% covered (danger)
25.00%
1 / 4
0.00% covered (danger)
0.00%
0 / 1
6.80
 checkMax
25.00% covered (danger)
25.00%
1 / 4
0.00% covered (danger)
0.00%
0 / 1
6.80
 checkMinMax
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 check
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getSchema
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace WebPConvert\Options;
4
5use WebPConvert\Options\Option;
6use WebPConvert\Options\Exceptions\InvalidOptionValueException;
7
8/**
9 * Abstract option class
10 *
11 * @package    WebPConvert
12 * @author     Bjørn Rosell <it@rosell.dk>
13 * @since      Class available since Release 2.0.0
14 */
15class IntegerOption extends Option
16{
17    protected $typeId = 'int';
18    protected $schemaType = ['integer'];
19    protected $minValue;
20    protected $maxValue;
21
22    /**
23     * Constructor.
24     *
25     * @param   string   $id              id of the option
26     * @param   integer  $defaultValue    default value for the option
27     * @throws  InvalidOptionValueException  if the default value cannot pass the check
28     * @return  void
29     */
30    public function __construct($id, $defaultValue, $minValue = null, $maxValue = null)
31    {
32        $this->minValue = $minValue;
33        $this->maxValue = $maxValue;
34        parent::__construct($id, $defaultValue);
35    }
36
37    protected function checkMin()
38    {
39        if (!is_null($this->minValue) && $this->getValue() < $this->minValue) {
40            throw new InvalidOptionValueException(
41                '"' . $this->id . '" option must be set to minimum ' . $this->minValue . '. ' .
42                'It was however set to: ' . $this->getValue()
43            );
44        }
45    }
46
47    protected function checkMax()
48    {
49        if (!is_null($this->maxValue) && $this->getValue() > $this->maxValue) {
50            throw new InvalidOptionValueException(
51                '"' . $this->id . '" option must be set to max ' . $this->maxValue . '. ' .
52                'It was however set to: ' . $this->getValue()
53            );
54        }
55    }
56
57    protected function checkMinMax()
58    {
59        $this->checkMin();
60        $this->checkMax();
61    }
62
63    public function check()
64    {
65        $this->checkType('integer');
66        $this->checkMinMax();
67    }
68
69    public function getSchema()
70    {
71        $obj = parent::getSchema();
72        $obj['minimum'] = $this->minValue;
73        $obj['maximum'] = $this->maxValue;
74        return $obj;
75    }
76}