@@ -23,37 +23,59 @@ final class GeneratorArgTest extends TestCase
23
23
/**
24
24
* Ensure that the generator property is set when the parameter is passed a valid value.
25
25
*
26
- * @param string $generatorName Generator name.
26
+ * @param string $argumentValue Generator name passed on the command line.
27
+ * @param string $expectedPropertyValue Expected value of the generator property.
27
28
*
28
- * @dataProvider dataGeneratorNames
29
+ * @dataProvider dataValidGeneratorNames
29
30
*
30
31
* @return void
31
32
*/
32
- public function testGenerators ( $ generatorName )
33
+ public function testValidGenerators ( $ argumentValue , $ expectedPropertyValue )
33
34
{
34
- $ config = new ConfigDouble (["--generator= $ generatorName " ]);
35
+ $ config = new ConfigDouble (["--generator= $ argumentValue " ]);
35
36
36
- $ this ->assertSame ($ generatorName , $ config ->generator );
37
+ $ this ->assertSame ($ expectedPropertyValue , $ config ->generator );
37
38
38
- }//end testGenerators ()
39
+ }//end testValidGenerators ()
39
40
40
41
41
42
/**
42
- * Data provider for testGenerators ().
43
+ * Data provider for testValidGenerators ().
43
44
*
44
- * @see self::testGenerators ()
45
+ * @see self::testValidGenerators ()
45
46
*
46
47
* @return array<int, array<string>>
47
48
*/
48
- public static function dataGeneratorNames ()
49
+ public static function dataValidGeneratorNames ()
49
50
{
50
51
return [
51
- ['Text ' ],
52
- ['HTML ' ],
53
- ['Markdown ' ],
52
+ 'Text generator passed ' => [
53
+ 'argumentValue ' => 'Text ' ,
54
+ 'expectedPropertyValue ' => 'Text ' ,
55
+ ],
56
+ 'HTML generator passed ' => [
57
+ 'argumentValue ' => 'HTML ' ,
58
+ 'expectedPropertyValue ' => 'HTML ' ,
59
+ ],
60
+ 'Markdown generator passed ' => [
61
+ 'argumentValue ' => 'Markdown ' ,
62
+ 'expectedPropertyValue ' => 'Markdown ' ,
63
+ ],
64
+ 'Uppercase Text generator passed ' => [
65
+ 'argumentValue ' => 'TEXT ' ,
66
+ 'expectedPropertyValue ' => 'Text ' ,
67
+ ],
68
+ 'Mixed case Text generator passed ' => [
69
+ 'argumentValue ' => 'tEXt ' ,
70
+ 'expectedPropertyValue ' => 'Text ' ,
71
+ ],
72
+ 'Lowercase HTML generator passed ' => [
73
+ 'argumentValue ' => 'html ' ,
74
+ 'expectedPropertyValue ' => 'HTML ' ,
75
+ ],
54
76
];
55
77
56
- }//end dataGeneratorNames ()
78
+ }//end dataValidGeneratorNames ()
57
79
58
80
59
81
/**
@@ -76,4 +98,50 @@ public function testOnlySetOnce()
76
98
}//end testOnlySetOnce()
77
99
78
100
101
+ /**
102
+ * Ensure that an exception is thrown for an invalid generator.
103
+ *
104
+ * @param string $generatorName Generator name.
105
+ *
106
+ * @dataProvider dataInvalidGeneratorNames
107
+ *
108
+ * @return void
109
+ */
110
+ public function testInvalidGenerator ($ generatorName )
111
+ {
112
+ $ exception = 'PHP_CodeSniffer\Exceptions\DeepExitException ' ;
113
+ $ message = 'ERROR: " ' .$ generatorName .'" is not a valid generator. The following generators are supported: Text, HTML and Markdown. ' ;
114
+
115
+ if (method_exists ($ this , 'expectException ' ) === true ) {
116
+ // PHPUnit 5+.
117
+ $ this ->expectException ($ exception );
118
+ $ this ->expectExceptionMessage ($ message );
119
+ } else {
120
+ // PHPUnit 4.
121
+ $ this ->setExpectedException ($ exception , $ message );
122
+ }
123
+
124
+ new ConfigDouble (["--generator= {$ generatorName }" ]);
125
+
126
+ }//end testInvalidGenerator()
127
+
128
+
129
+ /**
130
+ * Data provider for testInvalidGenerator().
131
+ *
132
+ * @see self::testInvalidGenerator()
133
+ *
134
+ * @return array<int, array<string>>
135
+ */
136
+ public static function dataInvalidGeneratorNames ()
137
+ {
138
+ return [
139
+ ['InvalidGenerator ' ],
140
+ ['Text,HTML ' ],
141
+ ['' ],
142
+ ];
143
+
144
+ }//end dataInvalidGeneratorNames()
145
+
146
+
79
147
}//end class
0 commit comments