Completed
Pull Request — master (#5)
by Carlos C
13:10
created

Options::optionComparisonIsIdentical()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php namespace GenericCollections;
2
3
use GenericCollections\Interfaces\BaseOptions;
4
5
/**
6
 * This class implements the BaseOptions interface
7
 *
8
 * Is a ValueObject (read-only) that defines the the container behavior
9
 *
10
 * @package GenericCollections
11
 */
12
class Options implements BaseOptions
13
{
14
    const UNIQUE_VALUES    = 1;
15
    const ALLOW_NULLS      = 2;
16
    const COMPARISON_EQUAL = 4;
17
18
    /** @var bool null members property */
19
    private $allowNullMembers;
20
21
    /** @var bool duplicates property */
22
    private $uniqueValues;
23
24
    /** @var bool comparison is identical */
25
    private $comparisonIsIdentical;
26
27
    /** @var int original options value */
28
    private $options;
29
30
    /**
31
     * Create a Options object based on a numeric value
32
     *
33
     * @param int $options
34
     */
35 447
    public function __construct($options)
36
    {
37 447
        if (!is_integer($options)) {
38 3
            throw new \InvalidArgumentException('The supplied options value is not an integer');
39
        }
40 444
        $options                     = $options & 7; // truncate to max value (3 ^ 2 - 1)
41 444
        $this->options               = $options;
42 444
        $this->allowNullMembers      = (bool) ($options & self::ALLOW_NULLS);
43 444
        $this->uniqueValues          = (bool) ($options & self::UNIQUE_VALUES);
44 444
        $this->comparisonIsIdentical = ! (bool) ($options & self::COMPARISON_EQUAL);
45 444
    }
46
47 441
    public function optionAllowNullMembers()
48
    {
49 441
        return $this->allowNullMembers;
50
    }
51
52 360
    public function optionUniqueValues()
53
    {
54 360
        return $this->uniqueValues;
55
    }
56
57 348
    public function optionComparisonIsIdentical()
58
    {
59 348
        return $this->comparisonIsIdentical;
60
    }
61
62
    /**
63
     * Return the options value
64
     *
65
     * @return int
66
     */
67 27
    public function getOptions()
68
    {
69 27
        return $this->options;
70
    }
71
}
72