php-kilo/tests/EditorTest.php

62 lines
1.3 KiB
PHP
Raw Normal View History

2019-11-19 17:01:45 -05:00
<?php declare(strict_types=1);
namespace Aviat\Kilo\Tests\Traits;
use Aviat\Kilo\Editor;
use PHPUnit\Framework\TestCase;
2019-11-20 15:03:48 -05:00
use Spatie\Snapshots\MatchesSnapshots;
use function Aviat\Kilo\get_window_size;
class MockEditor extends Editor {
public function __set(string $key, $value): void
{
if (property_exists($this, $key))
{
$this->$key = $value;
}
}
}
2019-11-19 17:01:45 -05:00
class EditorTest extends TestCase {
2019-11-20 15:03:48 -05:00
use MatchesSnapshots;
2019-11-19 17:01:45 -05:00
protected Editor $editor;
public function setUp(): void
{
parent::setUp();
// Mock the screen size, since that can vary widely
$this->editor = MockEditor::new();
$this->editor->__set('screenRows', 23);
$this->editor->__set('screenCols', 80);
2019-11-19 17:01:45 -05:00
}
public function testSanity(): void
{
$this->assertEquals(0, $this->editor->numRows);
$this->assertNull($this->editor->syntax);
}
2019-11-20 15:03:48 -05:00
public function test__debugInfo(): void
{
$state = json_encode($this->editor->__debugInfo(), JSON_THROW_ON_ERROR);
2019-11-20 15:03:48 -05:00
$this->assertMatchesJsonSnapshot($state);
}
public function testOpenPHP(): void
2019-11-20 15:03:48 -05:00
{
$this->editor->open('test.php');
$state = json_encode($this->editor, JSON_THROW_ON_ERROR);
$this->assertMatchesJsonSnapshot($state);
}
public function testOpen(): void
{
$this->editor->open('src/ffi.h');
$state = json_encode($this->editor, JSON_THROW_ON_ERROR);
2019-11-20 15:03:48 -05:00
$this->assertMatchesJsonSnapshot($state);
}
2019-11-19 17:01:45 -05:00
}