2023-12-25 21:53:38 +00:00
|
|
|
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
2023-12-29 22:40:38 +00:00
|
|
|
namespace Game;
|
|
|
|
|
2023-12-25 21:53:38 +00:00
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
|
|
|
|
final class FieldBitMapTest extends TestCase {
|
|
|
|
|
|
|
|
public function testEmptyMapHasPositions() {
|
|
|
|
$subject = FieldBitMap::empty();
|
|
|
|
|
|
|
|
$this->assertTrue($subject->isEmpty());
|
|
|
|
$this->assertEmpty($subject->getPositions());
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testFullMapHasAllPositions() {
|
|
|
|
$subject = FieldBitMap::full();
|
|
|
|
|
|
|
|
$this->assertFalse($subject->isEmpty());
|
|
|
|
$this->assertCount(64, $subject->getPositions());
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testMapPositionsAreRetained() {
|
|
|
|
$positions = [
|
|
|
|
new Position(0, 0),
|
|
|
|
new Position(3, 4),
|
|
|
|
new Position(7, 7),
|
|
|
|
];
|
|
|
|
|
|
|
|
$subject = new FieldBitMap($positions);
|
|
|
|
|
|
|
|
$this->assertFalse($subject->isEmpty());
|
|
|
|
$this->assertEquals($positions, $subject->getPositions());
|
|
|
|
}
|
|
|
|
|
2023-12-29 22:40:38 +00:00
|
|
|
public function testVisualize() {
|
|
|
|
$subject = new FieldBitMap([
|
|
|
|
new Position(0, 0),
|
|
|
|
new Position(1, 1),
|
|
|
|
new Position(2,2),
|
|
|
|
new Position(3, 3),
|
|
|
|
new Position(4, 3),
|
|
|
|
new Position(5, 3),
|
|
|
|
new Position(6, 3),
|
|
|
|
new Position(7, 3),
|
|
|
|
new Position(7, 4),
|
|
|
|
new Position(7, 5),
|
|
|
|
new Position(7, 6),
|
|
|
|
new Position(7, 7),
|
|
|
|
]);
|
|
|
|
|
|
|
|
$result = $subject->visualize();
|
|
|
|
$this->assertEquals(
|
|
|
|
"" .
|
|
|
|
"00000001\n" .
|
|
|
|
"00000001\n" .
|
|
|
|
"00000001\n" .
|
|
|
|
"00000001\n" .
|
|
|
|
"00011111\n" .
|
|
|
|
"00100000\n" .
|
|
|
|
"01000000\n" .
|
|
|
|
"10000000\n",
|
|
|
|
$result,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2023-12-25 21:53:38 +00:00
|
|
|
}
|