FizzBuzzNumberRule   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 18
Duplicated Lines 0 %

Coupling/Cohesion

Dependencies 3
Metric Value
wmc 2
cbo 3
dl 0
loc 18
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A generateValidAnswer() 0 8 2
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