TerrainGenerator::generate()   A
last analyzed

Complexity

Conditions 4
Paths 6

Size

Total Lines 16
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 16
ccs 9
cts 9
cp 1
rs 10
cc 4
nc 6
nop 3
crap 4
1
<?php
2
3
namespace JMGQ\AStar\Benchmark;
4
5
use JMGQ\AStar\Example\Terrain\TerrainCost;
6
7
class TerrainGenerator
8
{
9 7
    public function generate(int $rows, int $columns, ?int $seed = null): TerrainCost
10
    {
11 7
        $this->validatePositiveInteger($rows);
12 5
        $this->validatePositiveInteger($columns);
13
14 3
        $seed !== null ? mt_srand($seed) : mt_srand();
15
16 3
        $terrainCost = [];
17
18 3
        foreach (range(0, $rows - 1) as $row) {
19 3
            foreach (range(0, $columns - 1) as $column) {
20 3
                $terrainCost[$row][$column] = mt_rand(1, 10);
21
            }
22
        }
23
24 3
        return new TerrainCost($terrainCost);
25
    }
26
27 7
    private function validatePositiveInteger(int $number): void
28
    {
29 7
        if ($number < 1) {
30 4
            throw new \InvalidArgumentException("Invalid positive integer: $number");
31
        }
32 5
    }
33
}
34