Passed
Push — master ( b1d8eb...cab9a5 )
by Josh
03:28
created

BaseImplementation::validate()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 3

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 5
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 3
nc 2
nop 1
crap 3
1
<?php declare(strict_types=1);
2
3
/**
4
* @package   s9e\RegexpBuilder
5
* @copyright Copyright (c) 2016-2020 The s9e authors
6
* @license   http://www.opensource.org/licenses/mit-license.php The MIT License
7
*/
8
namespace s9e\RegexpBuilder\Output;
9
10
use InvalidArgumentException;
11
12
abstract class BaseImplementation implements OutputInterface
13
{
14
	/**
15
	* @var integer
16
	*/
17
	protected $maxValue = 0;
18
19
	/**
20
	* @var integer
21
	*/
22
	protected $minValue = 0;
23
24
	/**
25
	* @param array $options
26
	*/
27 19
	public function __construct(array $options = [])
28
	{
29
	}
30
31
	/**
32
	* {@inheritdoc}
33
	*/
34 53
	public function output(int $value): string
35
	{
36 53
		$this->validate($value);
37
38 47
		return $this->outputValidValue($value);
39
	}
40
41
	/**
42
	* Validate given value
43
	*
44
	* @param  integer $value
45
	* @return void
46
	*/
47 51
	protected function validate(int $value): void
48
	{
49 51
		if ($value < $this->minValue || $value > $this->maxValue)
50
		{
51 4
			throw new InvalidArgumentException('Value ' . $value . ' is out of bounds (' . $this->minValue . '..' . $this->maxValue . ')');
52
		}
53
	}
54
55
	/**
56
	* Serialize a valid value into a character
57
	*
58
	* @param  integer $value
59
	* @return string
60
	*/
61
	abstract protected function outputValidValue(int $value): string;
62
}