public function testPerformance() { $service = new ConversionService(); $builder = ConverterBuilder::get()->from(A::class)->to(B::class)->withImplementation(AToBConverter::class); $service->registerConverter($builder); $a = new A(1, json_encode(array('firstName' => 'john', 'lastName' => 'doe', 'age' => 30))); foreach ([5000, 15000, 25000, 50000] as $cycles) { $start = microtime(true); for ($i = $cycles; $i > 0; $i--) { $b = $service->convert($a, B::class); } echo "\n{$cycles} cycles executed in " . (microtime(true) - $start) . " seconds\n"; } }
/** * @expectedException \InvalidArgumentException * @expectedExceptionMesesage 'To' parameter should be a string containing 'string', 'array', or a class name */ public function testSetToWithInvalidValue() { $builder = ConverterBuilder::get(); $builder->to(5); }
/** * @expectedException \Mcustiel\Conversion\Exception\ObjectIsNotConverterException * @expectedExceptionMessage Object of type stdClass does not implement Mcustiel\Conversion\Converter */ public function testShouldFailWhenImplementationIsNotConverter() { $builder = ConverterBuilder::get()->from(A::class)->to(B::class)->withImplementation(\stdClass::class); ConverterContainer::getInstance()->addConverter($builder); ConverterContainer::getInstance()->getConverter(A::class, B::class); }
private function getConverterBuilderToRegister() { $register = ConverterBuilder::get()->from(A::class)->to(B::class)->withImplementation(AToBConverter::class); return $register; }
private function addDefaultConverter() { $builder = ConverterBuilder::get()->from(A::class)->to(B::class)->withImplementation(AToBConverter::class); $this->conversionService->addConverter($builder); }