<?php

declare(strict_types=1);
namespace Tests\git2;
use git2\git;
use git2\git_error;
use git2\git_error_code;
use git2\git_error_t;

final class ErrorTest extends GitTestCase
{

	public function testError(): void
	{
		$this->assertNull(git::error_last());
		$this->assertSame(git_error_code::ENOTFOUND, git::repository_open($_, 'foo'));
		$error = git::error_last();
		$this->assertInstanceOf(git_error::class, $error);
		$this->assertStringStartsWith('failed to resolve path', $error->message);
		$this->assertSame(git_error_t::OS, $error->klass);
		$this->assertOK(git::error_set_str(git_error_t::DESCRIBE, 'test'));
		$error = git::error_last();
		$this->assertSame('test', $error->message);
		$this->assertSame(git_error_t::DESCRIBE, $error->klass);
		git::error_clear();
		$this->assertNull(git::error_last());
		git::error_set_oom();
		$error = git::error_last();
		$this->assertSame('Out of memory', $error->message);
		$this->assertSame(git_error_t::NOMEMORY, $error->klass);
	}

}