public function testComplexMessageFromArray()
 {
     $phone1 = PhoneNumber::fromArray(['number' => '1231231212', 'type' => PhoneType::HOME()]);
     $phone2 = PhoneNumber::fromArray(['number' => '55512321312', 'type' => PhoneType::MOBILE()]);
     $phone3 = PhoneNumber::fromArray(['number' => '3493123123', 'type' => PhoneType::WORK()]);
     $person1 = Person::fromArray(['id' => 2051, 'name' => 'John Doe', 'email' => '*****@*****.**', 'phone' => [$phone1, $phone2]]);
     $person2 = Person::fromArray(['id' => 23, 'name' => 'Iván Montes', 'email' => '*****@*****.**', 'phone' => [$phone3]]);
     $book = AddressBook::fromArray(['person' => [$person1, $person2]]);
     $this->assertInstanceOf(AddressBook::CLASS, $book);
     $this->assertCount(2, $book->getPersonList());
     $p1 = $book->getPersonList()[0];
     $p2 = $book->getPersonList()[1];
     $this->assertSame($person1, $p1);
     $this->assertSame($person2, $p2);
     $this->assertEquals($p1->getId(), 2051);
     $this->assertEquals($p1->getName(), 'John Doe');
     $this->assertEquals($p2->getId(), 23);
     $this->assertEquals($p2->getName(), 'Iván Montes');
     $this->assertCount(2, $p1->getPhoneList());
     $this->assertCount(1, $p2->getPhoneList());
     $this->assertEquals($p1->getPhoneList()[0]->getNumber(), '1231231212');
     $this->assertEquals($p1->getPhoneList()[0]->getType(), PhoneType::HOME());
     $this->assertEquals($p1->getPhoneList()[1]->getNumber(), '55512321312');
     $this->assertEquals($p1->getPhoneList()[1]->getType(), PhoneType::MOBILE());
     $this->assertEquals($p2->getPhoneList()[0]->getNumber(), '3493123123');
     $this->assertEquals($p2->getPhoneList()[0]->getType(), PhoneType::WORK());
 }