* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class IntersectionResolverTest extends TestCase { public function testResolve() { $a = new StructType(); $a->setProperties([ 'foo' => TypeFactory::getString() ]); $b = new StructType(); $b->setProperties([ 'bar' => TypeFactory::getString() ]); $definitions = new Definitions(); $definitions->addType('Foo', $a); $definitions->addType('Bar', $b); $type = new IntersectionType(); $type->setAllOf([ TypeFactory::getReference('Foo'), TypeFactory::getReference('Bar') ]); $resolver = new IntersectionResolver($definitions); $result = $resolver->resolve($type); $this->assertEquals(['foo', 'bar'], array_keys($result->getProperties())); } public function testResolveNotPossible() { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('All of must contain only struct types'); $a = new StructType(); $a->setProperties([ 'foo' => TypeFactory::getString() ]); $b = new BooleanType(); $definitions = new Definitions(); $definitions->addType('Foo', $a); $definitions->addType('Bar', $b); $type = new IntersectionType(); $type->setAllOf([ TypeFactory::getReference('Foo'), TypeFactory::getReference('Bar') ]); $resolver = new IntersectionResolver($definitions); $result = $resolver->resolve($type); $this->assertEquals(['foo', 'bar'], array_keys($result->getProperties())); } } __halt_compiler();----SIGNATURE:----XawBGjZuLsqSw/4b/1tFSmHnoQCKrG4rOT96iNwd9YESF+Fmu+8vy2OwTo2Jiety4eziAzauSkXpMa32JXcZvOQkassir59NvpvD2ZC1JeZjoAjTPbyLquubW2TpgczYrA4YFnUgM+u6WYoXJN6hVLt23+NXOuH1qJ9WhGn9AAYHZ4l/nVqNrERIbDZMHB7gcvIQ1vbt1OO7Ly0liQY3U81kMiZW71K1mYapKmfdWfWuZigwd23s6OIaZ4coHUfOd2G3D39JaROsIVjX2Ngd166YIcB8hk6WpFKboRa4Gf3mWy9HVOE852iPgCysuH9jnUpwcKxlszODJGNr1oloU0jXJH45dXPWT5V3AV4Qiwiyc2lBrQ4rckwsMd1DC895y4rO0Hsc+RQkXHv1y2Fag5wqCy2wFxXxcmExI8DxlurSOlLDF1zK2gxhPPPgS1C4bn2EdV2028hBR4qCPju0N8WgWXKq7VaUsZfOZoCMpYP5Am6Ic0cIOEzu3KIjIwN7zEZtH4E9MK1Y+2QpiaspDDEQ78K9W9euRL9fscuwQOiIGaTI5qsqfiMBHZywPsnHlARRNX0Hw30ZGm9s0ituHw3fMR+T4xAHy2QhnZKMA2O3akos2mqQlo/5Lugwdtz5rGQdVAH8aAOaUKbb7vKZnGvJkc3m1SWn02UhNigliLY=----ATTACHMENT:----Nzc2MTQwOTU2OTAwMjY4NiA0MTYzOTg0NDk4MDQyOTQgOTI2OTIzMzQzODIwNjgyOA==