20250713 1.1.1
This commit is contained in:
		| @@ -4,7 +4,7 @@ namespace goodboyalex\php_components_pack\tests\classes; | ||||
|  | ||||
| use goodboyalex\php_components_pack\classes\ActionState; | ||||
| use goodboyalex\php_components_pack\enums\MessageType; | ||||
| use goodboyalex\php_components_pack\models\ActionStateMessageModel; | ||||
| use goodboyalex\php_components_pack\models\ActionStateMessage; | ||||
| use PHPUnit\Framework\TestCase; | ||||
|  | ||||
| class ActionStateTest extends TestCase | ||||
| @@ -29,7 +29,7 @@ class ActionStateTest extends TestCase | ||||
|         $this->assertEquals(2, $messages->Count()); | ||||
|  | ||||
|         $this->assertEquals("Non critical error", | ||||
|             $actionState->GetStringMessages(fn (ActionStateMessageModel $message) | ||||
|             $actionState->GetStringMessages(fn (ActionStateMessage $message) | ||||
|                 => $message->MessageType | ||||
|                 == MessageType::Error | ||||
|                 && !$message->IsCritical)); | ||||
| @@ -51,4 +51,4 @@ class ActionStateTest extends TestCase | ||||
|         require_once __DIR__ . '/../../sources/traits/ActionState/ActionStateStaticTrait.php'; | ||||
|         require_once __DIR__ . '/../../sources/enums/MessageType.php'; | ||||
|     } | ||||
| } | ||||
| } | ||||
| @@ -3,8 +3,14 @@ | ||||
| namespace goodboyalex\php_components_pack\tests\classes; | ||||
|  | ||||
| use goodboyalex\php_components_pack\classes\ObjectArray; | ||||
| use goodboyalex\php_components_pack\enums\ObjectArraySerializeMethod; | ||||
| use goodboyalex\php_components_pack\models\ObjectArraySerializeOptions; | ||||
| use goodboyalex\php_components_pack\tests\data\A; | ||||
| use goodboyalex\php_components_pack\tests\data\B; | ||||
| use goodboyalex\php_components_pack\tests\data\C; | ||||
| use goodboyalex\php_components_pack\tests\data\D; | ||||
| use PHPUnit\Framework\TestCase; | ||||
| use stdClass; | ||||
|  | ||||
| class ObjectArrayTest extends TestCase | ||||
| { | ||||
| @@ -38,6 +44,8 @@ class ObjectArrayTest extends TestCase | ||||
|     { | ||||
|         require_once __DIR__ . '/../data/A.php'; | ||||
|         require_once __DIR__ . '/../data/B.php'; | ||||
|         require_once __DIR__ . '/../data/C.php'; | ||||
|         require_once __DIR__ . '/../data/D.php'; | ||||
|         require_once __DIR__ . '/../../sources/interfaces/ISerializable.php'; | ||||
|         require_once __DIR__ . '/../../sources/traits/ArrayBasicTrait.php'; | ||||
|         require_once __DIR__ . '/../../sources/traits/ObjectArray/ObjectArrayConstantsTrait.php'; | ||||
| @@ -480,4 +488,66 @@ class ObjectArrayTest extends TestCase | ||||
|  | ||||
|         $this->assertEquals(12, $a_Array->Count()); | ||||
|     } | ||||
|  | ||||
|     public function testSerializeEx () | ||||
|     { | ||||
|         $this->PrepareForTest(); | ||||
|  | ||||
|         // Создаём тестовые классы | ||||
|         $class1 = new D ('test_string1', 12345, true, new A("test_string_A1", 6789, false), | ||||
|             new B("test_string_B1", 9876, "false"), new C("test_string_C1", 54321, true)); | ||||
|         $class2 = new D ('test_string2', 123456, false, new A("test_string_A1", 678910, true), | ||||
|             new B("test_string_B2", 98765, "true"), new C("test_string_C2", 543210, false)); | ||||
|         $class = new D ('test_string3', 123450, true, new A("test_string_A2", 67890, false), | ||||
|             new B("test_string_B3", 90876, "false"), new C("test_string_C3", 543201, true)); | ||||
|  | ||||
|         // Создаём массив объектов | ||||
|         $objectArray = new ObjectArray([$class1, $class2, $class]); | ||||
|  | ||||
|         // Сериализуем | ||||
|         $serialized1 = | ||||
|             $objectArray->SerializeEx(new ObjectArraySerializeOptions(ObjectArraySerializeMethod::Serialize)); | ||||
|         $serialized2 = | ||||
|             $objectArray->SerializeEx(new ObjectArraySerializeOptions(ObjectArraySerializeMethod::JsonEncode)); | ||||
|         $serialized3 = | ||||
|             $objectArray->SerializeEx(new ObjectArraySerializeOptions(ObjectArraySerializeMethod::JsonEncodeWithToArray, | ||||
|                 D::CLOSURE_TO_ARRAY())); | ||||
|  | ||||
|         // Сохраняем в файл | ||||
|         file_put_contents(__DIR__ . 'serialized1.txt', $serialized1); | ||||
|         file_put_contents(__DIR__ . 'serialized2.txt', $serialized2); | ||||
|         file_put_contents(__DIR__ . 'serialized3.txt', $serialized3); | ||||
|  | ||||
|         // Проверяем, что всё хорошо | ||||
|         $this->assertNotEmpty($serialized1); | ||||
|         $this->assertNotEmpty($serialized2); | ||||
|         $this->assertNotEmpty($serialized3); | ||||
|     } | ||||
|  | ||||
|     public function testUnSerializeEx () | ||||
|     { | ||||
|         $this->PrepareForTest(); | ||||
|  | ||||
|         // Загружаем данные | ||||
|         $serialized1 = file_get_contents(__DIR__ . 'serialized1.txt'); | ||||
|         $serialized2 = file_get_contents(__DIR__ . 'serialized2.txt'); | ||||
|         $serialized3 = file_get_contents(__DIR__ . 'serialized3.txt'); | ||||
|  | ||||
|         // Десериализуем | ||||
|         $objectArray1 = ObjectArray::UnSerializeEx($serialized1, | ||||
|             new ObjectArraySerializeOptions(ObjectArraySerializeMethod::Serialize)); | ||||
|         $objectArray2 = ObjectArray::UnSerializeEx($serialized2, | ||||
|             new ObjectArraySerializeOptions(ObjectArraySerializeMethod::JsonEncode)); | ||||
|         $objectArray3 = ObjectArray::UnSerializeEx($serialized3, | ||||
|             new ObjectArraySerializeOptions(ObjectArraySerializeMethod::JsonEncodeWithToArray, | ||||
|                 onClassFrom: D::CLOSURE_FROM_ARRAY())); | ||||
|  | ||||
|         // Проверяем, что всё хорошо | ||||
|         $this->assertEquals('test_string_A1', | ||||
|             $objectArray1->GetRow(fn (D $value) => $value->stringD == 'test_string1')->a->a); | ||||
|         $this->assertEquals('test_string_B2', | ||||
|             $objectArray2->GetRow(fn (stdClass $value) => $value->stringD == 'test_string2')->b->a); | ||||
|         $this->assertEquals('test_string_C3', | ||||
|             $objectArray3->GetRow(fn (D $value) => $value->stringD == 'test_string3')->c->stringC); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user