27 lines
991 B
PHP
27 lines
991 B
PHP
<?php
|
|
|
|
use Doom\Picture\DoomPalette;
|
|
|
|
test('provides a valid default doom palette', function (): void {
|
|
$palette = DoomPalette::default();
|
|
|
|
expect($palette->toArray())->toHaveCount(256);
|
|
expect($palette->colorAt(0))->toBe([0, 0, 0]);
|
|
expect($palette->colorAt(1))->toBe([31, 23, 11]);
|
|
});
|
|
|
|
test('extracts palette data from PLAYPAL bytes', function (): void {
|
|
$palette0 = str_repeat("\x00\x00\x00", 256);
|
|
$palette1 = str_repeat("\x10\x20\x30", 256);
|
|
|
|
$palette = DoomPalette::fromPlaypal($palette0 . $palette1, 1);
|
|
|
|
expect($palette->toArray())->toHaveCount(256);
|
|
expect($palette->colorAt(0))->toBe([16, 32, 48]);
|
|
expect($palette->colorAt(255))->toBe([16, 32, 48]);
|
|
});
|
|
|
|
test('rejects invalid PLAYPAL palette selection', function (): void {
|
|
expect(fn () => DoomPalette::fromPlaypal("\x00", 0))->toThrow(RuntimeException::class);
|
|
expect(fn () => DoomPalette::fromPlaypal(str_repeat("\x00", 768), -1))->toThrow(InvalidArgumentException::class);
|
|
});
|