Skip to content

Commit

Permalink
feat: add Comparable trait from oskarstark/enum-helper (#163)
Browse files Browse the repository at this point in the history
* Add `Comparable` trait from `oskarstark/enum-helper`

see https://github.com/OskarStark/enum-helper

* -
  • Loading branch information
OskarStark authored Dec 21, 2024
1 parent c14e28d commit 62ff661
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
],
"require": {
"php": ">=8.2",
"oskarstark/enum-helper": "^1.5",
"phpdocumentor/reflection-docblock": "^5.4",
"psr/cache": "^3.0",
"psr/log": "^3.0",
Expand Down
4 changes: 4 additions & 0 deletions src/Model/Message/Role.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@

namespace PhpLlm\LlmChain\Model\Message;

use OskarStark\Enum\Trait\Comparable;

enum Role: string
{
use Comparable;

case System = 'system';
case Assistant = 'assistant';
case User = 'user';
Expand Down
49 changes: 49 additions & 0 deletions tests/Model/Message/RoleTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php

declare(strict_types=1);

namespace PhpLlm\LlmChain\Tests\Model\Message;

use PhpLlm\LlmChain\Model\Message\Role;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Small;
use PHPUnit\Framework\Attributes\Test;
use PHPUnit\Framework\TestCase;

#[CoversClass(Role::class)]
#[Small]
final class RoleTest extends TestCase
{
#[Test]
public function values(): void
{
self::assertSame('system', Role::System->value);
self::assertSame('assistant', Role::Assistant->value);
self::assertSame('user', Role::User->value);
self::assertSame('tool', Role::ToolCall->value);
}

#[Test]
public function equals(): void
{
self::assertTrue(Role::System->equals(Role::System));
}

#[Test]
public function notEquals(): void
{
self::assertTrue(Role::System->notEquals(Role::Assistant));
}

#[Test]
public function notEqualsOneOf(): void
{
self::assertTrue(Role::System->notEqualsOneOf([Role::Assistant, Role::User]));
}

#[Test]
public function equalsOneOf(): void
{
self::assertTrue(Role::System->equalsOneOf([Role::System, Role::User]));
}
}

0 comments on commit 62ff661

Please sign in to comment.