TerrainGenerator   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
eloc 11
c 1
b 0
f 0
dl 0
loc 24
ccs 12
cts 12
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A validatePositiveInteger() 0 4 2
A generate() 0 16 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