@@ -330,9 +330,10 @@ class ParameterizedEfferentModuleCouplingTest
330330{};
331331
332332std::vector<StringUintParam> paramEfferentModule = {
333- {" %/test/sources/parser/module_a" , 1 },
333+ {" %/test/sources/parser/module_a" , 1 }, // B1
334334 {" %/test/sources/parser/module_b" , 0 },
335- {" %/test/sources/parser/module_c" , 2 },
335+ {" %/test/sources/parser/module_c" , 2 }, // A2, B1
336+ {" %/test/sources/parser/module_d" , 2 }, // D1, D2
336337};
337338
338339TEST_P (ParameterizedEfferentModuleCouplingTest, ModuleEfferentTest) {
@@ -353,3 +354,36 @@ INSTANTIATE_TEST_SUITE_P(
353354 ParameterizedEfferentModuleCouplingTest,
354355 ::testing::ValuesIn (paramEfferentModule)
355356);
357+
358+ // Afferent coupling at module level
359+
360+ class ParameterizedAfferentModuleCouplingTest
361+ : public CppMetricsParserTest,
362+ public ::testing::WithParamInterface<StringUintParam>
363+ {};
364+
365+ std::vector<StringUintParam> paramAfferentModule = {
366+ {" %/test/sources/parser/module_a" , 1 }, // C2
367+ {" %/test/sources/parser/module_b" , 3 }, // A2, C1, C2
368+ {" %/test/sources/parser/module_c" , 1 }, // D1
369+ {" %/test/sources/parser/module_d" , 0 },
370+ };
371+
372+ TEST_P (ParameterizedAfferentModuleCouplingTest, ModuleAfferentTest) {
373+ _transaction ([&, this ]() {
374+
375+ typedef odb::query<model::CppModuleMetricsForPathView> CppModuleMetricsQuery;
376+
377+ const auto metric = _db->query_value <model::CppModuleMetricsForPathView>(
378+ CppModuleMetricsQuery::CppFileMetrics::type == model::CppFileMetrics::Type::AFFERENT_MODULE &&
379+ CppModuleMetricsQuery::File::path.like (GetParam ().first ));
380+
381+ EXPECT_EQ (GetParam ().second , metric.value );
382+ });
383+ }
384+
385+ INSTANTIATE_TEST_SUITE_P (
386+ ParameterizedAfferentModuleCouplingTestSuite,
387+ ParameterizedAfferentModuleCouplingTest,
388+ ::testing::ValuesIn (paramAfferentModule)
389+ );
0 commit comments