<?php 
 
/** @noinspection PhpUnhandledExceptionInspection */ 
 
declare(strict_types=1); 
 
namespace MySQLReplication\Tests\Unit\Gtid; 
 
use MySQLReplication\Gtid\Gtid; 
use MySQLReplication\Gtid\GtidException; 
use PHPUnit\Framework\TestCase; 
 
class GtidTest extends TestCase 
{ 
    public function testShouldGetEncoded(): void 
    { 
        self::assertSame( 
            '9b1c8d182a7611e5a26b000c2976f3f301000000000000000100000000000000b8b5020000000000', 
            bin2hex($this->getGtid('9b1c8d18-2a76-11e5-a26b-000c2976f3f3:1-177592')->getEncoded()) 
        ); 
        self::assertSame( 
            '9b1c8d182a7611e5a26b000c2976f3f3010000000000000001000000000000000200000000000000', 
            bin2hex($this->getGtid('9b1c8d18-2a76-11e5-a26b-000c2976f3f3:1')->getEncoded()) 
        ); 
    } 
 
    public function testShouldGetEncodedLength(): void 
    { 
        self::assertSame(40, $this->getGtid('9b1c8d18-2a76-11e5-a26b-000c2976f3f3:1-177592')->getEncodedLength()); 
    } 
 
    public function testShouldThrowErrorOnIncrrectGtid(): void 
    { 
        $this->expectException(GtidException::class); 
        $this->expectExceptionMessage(GtidException::INCORRECT_GTID_MESSAGE); 
        $this->expectExceptionCode(GtidException::INCORRECT_GTID_CODE); 
 
        $this->getGtid('not gtid'); 
    } 
 
    private function getGtid(string $data): Gtid 
    { 
        return new Gtid($data); 
    } 
} 
 
 |