UserDataHandlerTest.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace Tests\Unit\AppGame;
  3. use Tests\TestCase;
  4. use App\Module\Game\Services\SkinService;
  5. use Uraus\Kku\Response\UserInfo;
  6. /**
  7. * 用户数据Handler测试
  8. *
  9. * 测试UserInfo中皮肤相关字段的正确填充
  10. */
  11. class UserDataHandlerTest extends TestCase
  12. {
  13. /**
  14. * 测试皮肤服务的基本功能
  15. */
  16. public function testSkinServiceBasicFunctions()
  17. {
  18. // 测试获取所有可用皮肤
  19. $allSkins = SkinService::getAllSkins();
  20. $this->assertIsArray($allSkins);
  21. $this->assertNotEmpty($allSkins);
  22. $this->assertArrayHasKey(1, $allSkins);
  23. $this->assertEquals('默认皮肤', $allSkins[1]);
  24. }
  25. /**
  26. * 测试UserInfo protobuf对象的皮肤字段设置
  27. */
  28. public function testUserInfoProtobufSkinFields()
  29. {
  30. $userInfo = new UserInfo();
  31. // 测试设置当前皮肤ID
  32. $userInfo->setSkinId(2);
  33. $this->assertEquals(2, $userInfo->getSkinId());
  34. // 测试设置拥有的皮肤列表
  35. $ownedSkins = [1, 2, 3, 4];
  36. $userInfo->setSkinIds($ownedSkins);
  37. $retrievedSkins = $userInfo->getSkinIds();
  38. $this->assertNotNull($retrievedSkins);
  39. // 将RepeatedField转换为数组进行比较
  40. $skinArray = [];
  41. for ($i = 0; $i < $retrievedSkins->count(); $i++) {
  42. $skinArray[] = $retrievedSkins->offsetGet($i);
  43. }
  44. $this->assertEquals($ownedSkins, $skinArray);
  45. }
  46. /**
  47. * 测试皮肤验证功能
  48. */
  49. public function testSkinValidation()
  50. {
  51. // 测试有效的皮肤ID
  52. $this->assertTrue(SkinService::isValidSkinId(1));
  53. $this->assertTrue(SkinService::isValidSkinId(2));
  54. $this->assertTrue(SkinService::isValidSkinId(3));
  55. $this->assertTrue(SkinService::isValidSkinId(4));
  56. // 测试无效的皮肤ID
  57. $this->assertFalse(SkinService::isValidSkinId(0));
  58. $this->assertFalse(SkinService::isValidSkinId(5));
  59. $this->assertFalse(SkinService::isValidSkinId(-1));
  60. // 测试皮肤名称获取
  61. $this->assertEquals('默认皮肤', SkinService::getSkinName(1));
  62. $this->assertEquals('春日皮肤', SkinService::getSkinName(2));
  63. $this->assertEquals('未知皮肤', SkinService::getSkinName(999));
  64. }
  65. }