From 62ff661ed7c0809e81a512a88ad658087fc4546b Mon Sep 17 00:00:00 2001 From: Oskar Stark Date: Sat, 21 Dec 2024 02:43:30 +0100 Subject: [PATCH] feat: add `Comparable` trait from `oskarstark/enum-helper` (#163) * Add `Comparable` trait from `oskarstark/enum-helper` see https://github.com/OskarStark/enum-helper * - --- composer.json | 1 + src/Model/Message/Role.php | 4 +++ tests/Model/Message/RoleTest.php | 49 ++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 tests/Model/Message/RoleTest.php diff --git a/composer.json b/composer.json index 07c5d4c..0cfe67b 100644 --- a/composer.json +++ b/composer.json @@ -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", diff --git a/src/Model/Message/Role.php b/src/Model/Message/Role.php index d3ce485..d2e093b 100644 --- a/src/Model/Message/Role.php +++ b/src/Model/Message/Role.php @@ -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'; diff --git a/tests/Model/Message/RoleTest.php b/tests/Model/Message/RoleTest.php new file mode 100644 index 0000000..fd82e66 --- /dev/null +++ b/tests/Model/Message/RoleTest.php @@ -0,0 +1,49 @@ +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])); + } +}