@@ -331,9 +331,10 @@ class ParameterizedEfferentModuleCouplingTest
331331{};
332332
333333std::vector<StringUintParam> paramEfferentModule = {
334- {" %/test/sources/parser/module_a" , 1 },
334+ {" %/test/sources/parser/module_a" , 1 }, // B1
335335 {" %/test/sources/parser/module_b" , 0 },
336- {" %/test/sources/parser/module_c" , 2 },
336+ {" %/test/sources/parser/module_c" , 2 }, // A2, B1
337+ {" %/test/sources/parser/module_d" , 2 }, // C1, C2
337338};
338339
339340TEST_P (ParameterizedEfferentModuleCouplingTest, ModuleEfferentTest) {
@@ -355,6 +356,39 @@ INSTANTIATE_TEST_SUITE_P(
355356 ::testing::ValuesIn (paramEfferentModule)
356357);
357358
359+ // Afferent coupling at module level
360+
361+ class ParameterizedAfferentModuleCouplingTest
362+ : public CppMetricsParserTest,
363+ public ::testing::WithParamInterface<StringUintParam>
364+ {};
365+
366+ std::vector<StringUintParam> paramAfferentModule = {
367+ {" %/test/sources/parser/module_a" , 1 }, // C2
368+ {" %/test/sources/parser/module_b" , 3 }, // A2, C1, C2
369+ {" %/test/sources/parser/module_c" , 1 }, // D1
370+ {" %/test/sources/parser/module_d" , 0 },
371+ };
372+
373+ TEST_P (ParameterizedAfferentModuleCouplingTest, ModuleAfferentTest) {
374+ _transaction ([&, this ]() {
375+
376+ typedef odb::query<model::CppModuleMetricsForPathView> CppModuleMetricsQuery;
377+
378+ const auto metric = _db->query_value <model::CppModuleMetricsForPathView>(
379+ CppModuleMetricsQuery::CppFileMetrics::type == model::CppFileMetrics::Type::AFFERENT_MODULE &&
380+ CppModuleMetricsQuery::File::path.like (GetParam ().first ));
381+
382+ EXPECT_EQ (GetParam ().second , metric.value );
383+ });
384+ }
385+
386+ INSTANTIATE_TEST_SUITE_P (
387+ ParameterizedAfferentModuleCouplingTestSuite,
388+ ParameterizedAfferentModuleCouplingTest,
389+ ::testing::ValuesIn (paramAfferentModule)
390+ );
391+
358392// Relational cohesion at module level
359393
360394class ParameterizedRelationalCohesionTest
@@ -391,4 +425,4 @@ INSTANTIATE_TEST_SUITE_P(
391425 ParameterizedRelationalCohesionTestSuite,
392426 ParameterizedRelationalCohesionTest,
393427 ::testing::ValuesIn (paramRelationalCohesion)
394- );
428+ );
0 commit comments