FizzBuzzNumberRule::generateValidAnswer()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 8
rs 9.4285
cc 2
eloc 4
nc 2
nop 1
1
<?php
2
3
namespace FizzBuzzDomain\Rules;
4
5
use GameDomain\Exceptions\IrrelevantRuleException;
6
use GameDomain\Round\Step\Answer;
7
use GameDomain\Rule\AbstractRule;
8
9
/**
10
 * FizzBuzz Number Rule
11
 */
12
final class FizzBuzzNumberRule extends AbstractRule
13
{
14
    const FIRST_TRIGGER_NUMBER = 3;
15
    const SECOND_TRIGGER_NUMBER = 5;
16
    const VALID_ANSWER = 'FizzBuzz';
17
18
    /**
19
     * {@inheritDoc}
20
     */
21
    public function generateValidAnswer($number)
22
    {
23
        if (0 === ($number % static::FIRST_TRIGGER_NUMBER) + ($number % static::SECOND_TRIGGER_NUMBER)) {
24
            return new Answer(static::VALID_ANSWER);
25
        }
26
27
        throw new IrrelevantRuleException();
28
    }
29
}
30