38 self::FLAG_CONST =>
'isConst',
39 self::FLAG_STATIC =>
'isStatic',
40 self::FLAG_FINAL =>
'isFinal',
41 self::FLAG_ABSTRACT =>
'isAbstract',
42 self::FLAG_REFERENCE =>
'getPassedByReference',
43 self::FLAG_VARIADIC =>
'getVariadic',
52 'shortDescription' =>
'test_short_description',
53 'longDescription' =>
'test_long_description',
55 'tag1' => [
'name' =>
'tag1',
'description' =>
'data1'],
56 'tag2' => [
'name' =>
'tag2',
'description' =>
'data2'],
67 'name' =>
'testMethod1',
75 'passedByReference' =>
true,
79 'body' =>
'return 1;',
80 'docblock' => [
'shortDescription' =>
'test short description'],
83 'name' =>
'_testMethod2',
84 'visibility' =>
'private',
87 [
'name' =>
'data',
'defaultValue' =>
'test_default'],
88 [
'name' =>
'flag',
'defaultValue' =>
true],
90 'body' =>
'return 2;',
92 'shortDescription' =>
'test short description',
93 'longDescription' =>
'test long description',
95 'tag1' => [
'name' =>
'tag1',
'description' =>
'data1'],
96 'tag2' => [
'name' =>
'tag2',
'description' =>
'data2'],
100 'testmethod3' => [
'name' =>
'testMethod3',
'body' =>
'return 3;'],
109 '_protectedProperty' => [
110 'name' =>
'_protectedProperty',
111 'visibility' =>
'protected',
114 'shortDescription' =>
'Object Manager instance',
115 'tags' => [
'var' => [
'name' =>
'var',
'description' =>
'tag description']],
118 'publicProperty' => [
'name' =>
'publicProperty'],
123 $this->_model = new \Magento\Framework\Code\Generator\ClassGenerator();
128 unset($this->_model);
133 $this->_model->setClassDocBlock($this->_docBlockData);
134 $actualDocBlock = $this->_model->getDocBlock();
136 $this->_assertDocBlockData($this->_docBlockData, $actualDocBlock);
143 protected function _assertDocBlockData(
144 array $expectedDocBlock,
148 foreach ($expectedDocBlock as $propertyName => $propertyData) {
149 if (is_string($propertyData)) {
150 $this->assertAttributeEquals($propertyData, $propertyName, $actualDocBlock);
155 if (isset($expectedDocBlock[
'tags'])) {
156 $expectedTagsData = $expectedDocBlock[
'tags'];
157 $actualTags = $actualDocBlock->getTags();
158 $this->assertSameSize($expectedTagsData, $actualTags);
160 foreach ($actualTags as $actualTag) {
161 $tagName = $actualTag->getName();
162 $this->assertArrayHasKey($tagName, $expectedTagsData);
163 $this->assertEquals($expectedTagsData[$tagName][
'name'], $tagName);
164 $this->assertEquals($expectedTagsData[$tagName][
'description'], $actualTag->getDescription());
169 public function testAddMethods()
171 $this->_model->addMethods($this->_methodData);
172 $actualMethods = $this->_model->getMethods();
174 $this->assertSameSize($this->_methodData, $actualMethods);
177 foreach ($actualMethods as $methodName =>
$method) {
178 $this->assertArrayHasKey($methodName, $this->_methodData);
179 $expectedMethodData = $this->_methodData[$methodName];
181 $this->assertEquals($expectedMethodData[
'name'],
$method->getName());
182 $this->assertEquals($expectedMethodData[
'body'],
$method->getBody());
193 if (isset($expectedMethodData[
'parameters'])) {
194 $actualParameters =
$method->getParameters();
195 $this->assertSameSize($expectedMethodData[
'parameters'], $actualParameters);
196 foreach ($expectedMethodData[
'parameters'] as $parameterData) {
197 $parameterName = $parameterData[
'name'];
198 $this->assertArrayHasKey($parameterName, $actualParameters);
200 $actualParameter = $actualParameters[$parameterName];
201 $this->assertEquals($parameterName, $actualParameter->getName());
204 $this->
_assertFlag(self::FLAG_REFERENCE, $parameterData, $actualParameter);
207 if (isset($parameterData[
'type'])) {
208 $this->assertEquals($parameterData[
'type'], $actualParameter->getType());
212 if (isset($parameterData[
'defaultValue'])) {
214 $actualDefaultValue = $actualParameter->getDefaultValue();
215 $this->assertEquals($parameterData[
'defaultValue'], $actualDefaultValue->getValue());
219 $this->
_assertFlag(self::FLAG_VARIADIC, $parameterData, $actualParameter);
224 if (isset($expectedMethodData[
'docblock'])) {
225 $actualDocBlock =
$method->getDocBlock();
226 $this->_assertDocBlockData($expectedMethodData[
'docblock'], $actualDocBlock);
236 protected function _assertFlag($flagType, array $expectedData, $actualObject)
238 $expectedFlagValue = isset($expectedData[$flagType]) && $expectedData[$flagType];
239 $flagGetter = $this->_flagVerification[$flagType];
240 $this->assertEquals($expectedFlagValue, $actualObject->{$flagGetter}());
251 $expectedVisibility = isset($expectedData[
'visibility']) ? $expectedData[
'visibility'] :
'public';
252 $this->assertEquals($expectedVisibility, $actualObject->getVisibility());
263 $invalidMethod = new \Zend\Code\Generator\MethodGenerator();
264 $this->_model->addMethodFromGenerator($invalidMethod);
267 public function testAddProperties()
269 $this->_model->addProperties($this->_propertyData);
270 $actualProperties = $this->_model->getProperties();
272 $this->assertSameSize($this->_propertyData, $actualProperties);
275 foreach ($actualProperties as $propertyName => $property) {
276 $this->assertArrayHasKey($propertyName, $this->_propertyData);
277 $expectedPropertyData = $this->_propertyData[$propertyName];
279 $this->assertEquals($expectedPropertyData[
'name'], $property->getName());
282 $this->_assertFlag(self::FLAG_CONST, $expectedPropertyData, $property);
283 $this->_assertFlag(self::FLAG_STATIC, $expectedPropertyData, $property);
286 $this->_assertVisibility($expectedPropertyData, $property);
289 if (isset($expectedPropertyData[
'defaultValue'])) {
291 $actualDefaultValue = $property->getDefaultValue();
292 $this->assertEquals($expectedPropertyData[
'defaultValue'], $actualDefaultValue->getValue());
296 if (isset($expectedPropertyData[
'docblock'])) {
297 $actualDocBlock = $property->getDocBlock();
298 $this->_assertDocBlockData($expectedPropertyData[
'docblock'], $actualDocBlock);
311 $invalidProperty = new \Zend\Code\Generator\PropertyGenerator();
312 $this->_model->addPropertyFromGenerator($invalidProperty);
324 $this->_model->setNamespaceName($actualNamespace)
338 [
'\Zend\SomeClass',
'Zend\SomeClass'],
_assertFlag($flagType, array $expectedData, $actualObject)
_assertVisibility(array $expectedData, \Zend\Code\Generator\AbstractMemberGenerator $actualObject)
testAddMethodFromGenerator()
testAddPropertyFromGenerator()
testNamespaceName($actualNamespace, $expectedNamespace)