summaryrefslogtreecommitdiff
path: root/tests/World/BoidTest.php
blob: 1c7202dc7fa3d88b3d6cea6c5851e01d87b184c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php

namespace Tests\World;

use App\World\Boid;
use App\World\World;
use PHPUnit\Framework\TestCase;

class BoidTest extends TestCase
{
    public function testBoidConstruction()
    {
        $boid = new Boid(5, 1, 2, 'boid');

        $this->assertEquals(5, $boid->radius());
        $this->assertEquals([1, 2], $boid->position());
        $this->assertEquals('boid', $boid->name());

        $boid = new Boid(5, 1, 2);
        $this->assertEquals(5, $boid->radius());
        $this->assertEquals([1, 2], $boid->position());
        $this->assertTrue(is_string($boid->name()));
        $this->assertTrue(strpos($boid->name(), 'boid') === 0);
    }

    public function testBoidWorldCollision()
    {
        $world = new World(200, 200);

        $boid = new Boid(5, 10, 10);
        $this->assertEquals(false, $boid->isCollisionWithWorld($world->width(), $world->height(), 0, 0));

        $boid = new Boid(5, 0, 0);
        $this->assertEquals(true, $boid->isCollisionWithWorld($world->width(), $world->height(), 0, 0));

        $boid = new Boid(5, -100, 100);
        $this->assertEquals(true, $boid->isCollisionWithWorld($world->width(), $world->height(), 0, 0));

        $boid = new Boid(5, 100, -100);
        $this->assertEquals(true, $boid->isCollisionWithWorld($world->width(), $world->height(), 0, 0));

        $boid = new Boid(5, 200, 200);
        $this->assertEquals(true, $boid->isCollisionWithWorld($world->width(), $world->height(), 0, 0));
    }
}