/** * Test serialize/deserialize method. */ public function testSerializeDeserialize() { $this->given($serializer = new DefaultSerializer())->when($data = $serializer->serialize(10.32))->then()->float($serializer->deserialize($data))->isEqualTo(10.32)->and()->when($data = $serializer->serialize('test'))->then()->string($serializer->deserialize($data))->isEqualTo('test')->and()->when($data = $serializer->serialize(array('foo' => 'bar')))->then()->array($serializer->deserialize($data))->isEqualTo(array('foo' => 'bar')); $this->given($serializer = new DefaultSerializer())->and($address = new Address('Avinguda Vilares, 5, Montgar', '08390', 'Barcelona'))->and($person = new Person('Ivannis Suarez Jerez', $address))->and($person1 = new Person('Carla Fernandez Couso', $address))->when($data = $serializer->serialize($person))->then()->boolean($person->equals($serializer->deserialize($data)))->isTrue()->boolean($person1->equals($serializer->deserialize($data)))->isFalse()->exception(function () use($serializer, $address) { $serializer->serialize($address); })->isInstanceOf(\InvalidArgumentException::class); }
/** * @param Person $other * * @return bool */ public function equals(Person $other) { return $this->address() == $other->address() && $this->name() == $other->name(); }