2222import fr .cnes .sonar .plugins .icode .model .Result ;
2323import org .junit .Assert ;
2424import org .junit .Before ;
25- import org .junit .Test ;
25+ import org .junit .jupiter .api .Test ;
26+ import org .junit .jupiter .params .ParameterizedTest ;
27+ import org .junit .jupiter .params .provider .MethodSource ;
28+ import org .junit .jupiter .params .provider .Arguments ;
29+
30+ import java .util .stream .Stream ;
2631import org .sonar .api .batch .fs .InputFile ;
2732import org .sonar .api .batch .fs .internal .DefaultFileSystem ;
2833import org .sonar .api .batch .fs .internal .DefaultInputFile ;
@@ -77,52 +82,45 @@ public void prepare() throws URISyntaxException {
7782 files .put ("clanhb.f90" , clanhb_f90 );
7883 }
7984
80- @ Test
81- public void test_is_metric_true () {
82- Assert .assertTrue (ICodeMetricsProcessor .isMetric ("SH.MET.COCO" ));
83- }
84-
85- @ Test
86- public void test_is_metric_false () {
87- Assert .assertFalse (ICodeMetricsProcessor .isMetric ("COCO" ));
85+ private static Stream <Arguments > testData () {
86+ return Stream .of (
87+ Arguments .of (new AnalysisRuleTestData ("F77.MET.ComplexitySimplified" , "clanhb.f" , "3" )),
88+ Arguments .of (new AnalysisRuleTestData ("F77.MET.Nesting" , "clanhb.f" , "3" )),
89+ Arguments .of (new AnalysisRuleTestData ("F77.MET.Line" , "clanhb.f" , "3" ))
90+ );
8891 }
8992
90- @ Test
91- public void test_save_nominal_measures () {
92-
93- final String key = clanhb_f .key ();
94- rule .setResult (new Result ());
95- rule .setAnalysisRuleId ("F77.MET.Line" );
96- rule .getResult ().setFileName ("clanhb.f" );
97- rule .getResult ().setResultValue ("3" );
98- rule .getResult ().setResultLine ("3" );
99- rule .getResult ().setResultTypePlace ("class" );
100- rule .getResult ().setResultMessage ("Small file" );
101-
102- ICodeMetricsProcessor .saveMeasure (context , files , rule );
103- Assert .assertEquals (1 , context .measures (key ).size ());
104- }
105-
106- @ Test
107- public void test_compute_complexity () {
108-
93+ @ ParameterizedTest
94+ @ MethodSource ("testData" )
95+ public void test_compute_metrics (AnalysisRuleTestData testData ) {
10996 final AnalysisProject project = new AnalysisProject ();
11097 final String key = clanhb_f .key ();
11198
11299 rule .setResult (new Result ());
113- rule .setAnalysisRuleId ("F77.MET.ComplexitySimplified" );
114- rule .getResult ().setFileName ("clanhb.f" );
115- rule .getResult ().setResultValue ("3" );
116- rule .getResult ().setResultLine ("3" );
100+ rule .setAnalysisRuleId (testData . getAnalysisRuleId () );
101+ rule .getResult ().setFileName (testData . getFileName () );
102+ rule .getResult ().setResultValue (testData . getResultValue () );
103+ rule .getResult ().setResultLine ("3" ); // Assuming the result line is always "3"
117104 rule .getResult ().setResultTypePlace ("method" );
118105 rule .getResult ().setResultMessage ("Small file" );
119106
120107 project .setAnalysisRule (new AnalysisRule []{rule });
121108
122109 ICodeMetricsProcessor .saveExtraMeasures (context , files , project );
110+
123111 Assert .assertEquals (1 , context .measures (key ).size ());
124112 }
125113
114+ @ Test
115+ public void test_is_metric_true () {
116+ Assert .assertTrue (ICodeMetricsProcessor .isMetric ("SH.MET.COCO" ));
117+ }
118+
119+ @ Test
120+ public void test_is_metric_false () {
121+ Assert .assertFalse (ICodeMetricsProcessor .isMetric ("COCO" ));
122+ }
123+
126124 @ Test
127125 public void test_save_extra_measure_with_null_location () {
128126 // If we upgrade to Junit5, we may check @ParametrizedTest annotation
@@ -145,42 +143,44 @@ public void test_save_extra_measure_with_null_location() {
145143 }
146144
147145 @ Test
148- public void test_compute_nesting () {
146+ public void test_save_nominal_measures () {
149147
150- final AnalysisProject project = new AnalysisProject ();
151148 final String key = clanhb_f .key ();
152-
153149 rule .setResult (new Result ());
154- rule .setAnalysisRuleId ("F77.MET.Nesting " );
150+ rule .setAnalysisRuleId ("F77.MET.Line " );
155151 rule .getResult ().setFileName ("clanhb.f" );
156152 rule .getResult ().setResultValue ("3" );
157153 rule .getResult ().setResultLine ("3" );
158- rule .getResult ().setResultTypePlace ("method " );
154+ rule .getResult ().setResultTypePlace ("class " );
159155 rule .getResult ().setResultMessage ("Small file" );
160156
161- project .setAnalysisRule (new AnalysisRule []{rule });
162-
163- ICodeMetricsProcessor .saveExtraMeasures (context , files , project );
157+ ICodeMetricsProcessor .saveMeasure (context , files , rule );
164158 Assert .assertEquals (1 , context .measures (key ).size ());
165159 }
160+
161+ }
166162
167- @ Test
168- public void test_compute_functions () {
163+ class AnalysisRuleTestData {
164+ private String analysisRuleId ;
165+ private String fileName ;
166+ private String resultValue ;
169167
170- final AnalysisProject project = new AnalysisProject ();
171- final String key = clanhb_f .key ();
168+ public AnalysisRuleTestData (String analysisRuleId , String fileName , String resultValue ) {
169+ this .analysisRuleId = analysisRuleId ;
170+ this .fileName = fileName ;
171+ this .resultValue = resultValue ;
172+ }
172173
173- rule .setResult (new Result ());
174- rule .setAnalysisRuleId ("F77.MET.Line" );
175- rule .getResult ().setFileName ("clanhb.f" );
176- rule .getResult ().setResultValue ("3" );
177- rule .getResult ().setResultLine ("3" );
178- rule .getResult ().setResultTypePlace ("method" );
179- rule .getResult ().setResultMessage ("Small file" );
174+ public String getAnalysisRuleId () {
175+ return analysisRuleId ;
176+ }
180177
181- project .setAnalysisRule (new AnalysisRule []{rule });
178+ public String getFileName () {
179+ return fileName ;
180+ }
182181
183- ICodeMetricsProcessor . saveExtraMeasures ( context , files , project );
184- Assert . assertEquals ( 1 , context . measures ( key ). size ()) ;
182+ public String getResultValue () {
183+ return resultValue ;
185184 }
185+
186186}
0 commit comments