12
12
* @group generator
13
13
*/
14
14
class ClassGeneratorTest extends \PHPUnit_Framework_TestCase {
15
-
15
+
16
16
use TestUtils;
17
17
18
18
public function testSignature () {
@@ -24,103 +24,121 @@ public function testSignature() {
24
24
25
25
$ this ->assertEquals ($ expected , $ code );
26
26
}
27
-
27
+
28
28
public function testAbstract () {
29
29
$ expected = 'abstract class MyClass { ' . "\n" . '} ' ;
30
-
30
+
31
31
$ class = PhpClass::create ('MyClass ' )->setAbstract (true );
32
32
$ generator = new ModelGenerator ();
33
33
$ code = $ generator ->generate ($ class );
34
-
34
+
35
35
$ this ->assertEquals ($ expected , $ code );
36
36
}
37
-
37
+
38
38
public function testFinal () {
39
39
$ expected = 'final class MyClass { ' . "\n" . '} ' ;
40
-
40
+
41
41
$ class = PhpClass::create ('MyClass ' )->setFinal (true );
42
42
$ generator = new ModelGenerator ();
43
43
$ code = $ generator ->generate ($ class );
44
-
44
+
45
45
$ this ->assertEquals ($ expected , $ code );
46
46
}
47
-
47
+
48
48
public function testInterfaces () {
49
49
$ generator = new ModelGenerator ();
50
-
50
+
51
51
$ expected = 'class MyClass implements \Iterator { ' . "\n" . '} ' ;
52
52
$ class = PhpClass::create ('MyClass ' )->addInterface ('\Iterator ' );
53
53
$ this ->assertEquals ($ expected , $ generator ->generate ($ class ));
54
-
54
+
55
55
$ expected = 'class MyClass implements \Iterator, \ArrayAccess { ' . "\n" . '} ' ;
56
56
$ class = PhpClass::create ('MyClass ' )->addInterface ('\Iterator ' )->addInterface ('\ArrayAccess ' );
57
57
$ this ->assertEquals ($ expected , $ generator ->generate ($ class ));
58
58
}
59
59
60
60
public function testParent () {
61
61
$ expected = 'class MyClass extends MyParent { ' . "\n" . '} ' ;
62
-
62
+
63
63
$ class = PhpClass::create ('MyClass ' )->setParentClassName ('MyParent ' );
64
64
$ generator = new ModelGenerator ();
65
65
$ code = $ generator ->generate ($ class );
66
-
66
+
67
67
$ this ->assertEquals ($ expected , $ code );
68
68
}
69
69
70
70
public function testUseStatements () {
71
71
$ class = new PhpClass ('Foo \\Bar ' );
72
72
$ class ->addUseStatement ('Bam \\Baz ' );
73
-
73
+
74
74
$ codegen = new CodeFileGenerator (['generateDocblock ' => false , 'generateEmptyDocblock ' => false ]);
75
75
$ code = $ codegen ->generate ($ class );
76
-
76
+
77
77
$ this ->assertEquals ($ this ->getGeneratedContent ('FooBar.php ' ), $ code );
78
-
78
+
79
79
$ class = new PhpClass ('Foo \\Bar ' );
80
80
$ class ->addUseStatement ('Bam \\Baz ' , 'BamBaz ' );
81
-
81
+
82
82
$ codegen = new CodeFileGenerator (['generateDocblock ' => false , 'generateEmptyDocblock ' => false ]);
83
83
$ code = $ codegen ->generate ($ class );
84
-
84
+
85
85
$ this ->assertEquals ($ this ->getGeneratedContent ('FooBarWithAlias.php ' ), $ code );
86
-
86
+
87
87
$ class = new PhpClass ('Foo ' );
88
88
$ class ->addUseStatement ('Bar ' );
89
-
89
+
90
90
$ generator = new ModelGenerator ();
91
91
$ code = $ generator ->generate ($ class );
92
92
$ expected = 'class Foo { ' . "\n" . '} ' ;
93
-
93
+
94
94
$ this ->assertEquals ($ expected , $ code );
95
95
}
96
96
97
97
public function testABClass () {
98
98
$ class = Fixtures::createABClass ();
99
-
99
+
100
100
$ modelGenerator = new ModelGenerator ();
101
101
$ modelCode = $ modelGenerator ->generate ($ class );
102
102
$ this ->assertEquals ($ this ->getGeneratedContent ('ABClass.php ' ), $ modelCode );
103
103
$ generator = new CodeGenerator (['generateDocblock ' => false ]);
104
104
$ code = $ generator ->generate ($ class );
105
105
$ this ->assertEquals ($ modelCode , $ code );
106
-
106
+
107
107
$ modelGenerator = new ModelGenerator (['generateDocblock ' => true ]);
108
108
$ modelCode = $ modelGenerator ->generate ($ class );
109
109
$ this ->assertEquals ($ this ->getGeneratedContent ('ABClassWithComments.php ' ), $ modelCode );
110
110
$ generator = new CodeGenerator (['generateDocblock ' => true ]);
111
111
$ code = $ generator ->generate ($ class );
112
112
$ this ->assertEquals ($ modelCode , $ code );
113
113
}
114
-
114
+
115
115
public function testRequireTraitsClass () {
116
116
$ class = PhpClass::create ('RequireTraitsClass ' )
117
117
->addRequiredFile ('FooBar.php ' )
118
118
->addRequiredFile ('ABClass.php ' )
119
119
->addTrait ('Iterator ' );
120
-
120
+
121
121
$ generator = new ModelGenerator ();
122
122
$ code = $ generator ->generate ($ class );
123
123
$ this ->assertEquals ($ this ->getGeneratedContent ('RequireTraitsClass.php ' ), $ code );
124
124
}
125
125
126
+ public function testMyCollection () {
127
+ $ class = PhpClass::fromFile (__DIR__ . '/../fixtures/MyCollection.php ' );
128
+
129
+ $ generator = new CodeFileGenerator (['generateDocblock ' => false ]);
130
+ $ code = $ generator ->generate ($ class );
131
+
132
+ $ this ->assertEquals ($ this ->getFixtureContent ('MyCollection.php ' ), $ code );
133
+ }
134
+
135
+ public function testMyCollection2 () {
136
+ $ class = PhpClass::fromFile (__DIR__ . '/../fixtures/MyCollection2.php ' );
137
+
138
+ $ generator = new CodeFileGenerator (['generateDocblock ' => false ]);
139
+ $ code = $ generator ->generate ($ class );
140
+
141
+ $ this ->assertEquals ($ this ->getFixtureContent ('MyCollection2.php ' ), $ code );
142
+ }
143
+
126
144
}
0 commit comments