<?php
declare(strict_types=1);
namespace Tests\git2\Internal;
use git2\git;
use git2\git_error_t;
use git2\StructMemberAccessException;
use Tests\git2\GitTestCase;
final class StructTest extends GitTestCase
{
public function testMemberRead(): void
{
git::error_set_oom();
$error = git::error_last();
$this->assertNotNull($error);
$this->assertTrue(isset($error->message));
$this->assertTrue(isset($error->klass));
$this->assertFalse(isset($error->{'foo'}));
$this->assertSame('Out of memory', $error->message);
$this->assertSame(git_error_t::NOMEMORY, $error->klass);
}
public function testMemberWrite(): void
{
$this->expectException(StructMemberAccessException::class);
$this->expectExceptionMessage('Struct member git2\git_error::$message is read-only.');
git::error_set_oom();
git::error_last()->{'message'} = 'test';
}
public function testMemberNonExistent(): void
{
$this->expectException(StructMemberAccessException::class);
$this->expectExceptionMessage('Struct member git2\git_error::$foo is not declared.');
git::error_set_oom();
git::error_last()->{'foo'};
}
}