MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / applyLangFiles

Method applyLangFiles

test/testfrontend.cpp:92–144  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

90 }
91
92 void applyLangFiles() const
93 {
94 const char xmldata[] = R"(<def format="2"><markup ext=".ml" reporterrors="false"/></def>)";
95 const Settings s = settingsBuilder().libraryxml(xmldata).build();
96
97 const std::list<FileWithDetails> fs = {
98 {"nolang", Standards::Language::None, 0 },
99 {"c", Standards::Language::C, 0 },
100 {"cpp", Standards::Language::CPP, 0 },
101 {"nolang.c", Standards::Language::None, 0 },
102 {"nolang.cpp", Standards::Language::None, 0 },
103 {"nolang.ml", Standards::Language::None, 0 }
104 };
105
106 // no language to enforce - identify only
107 {
108 std::list<FileWithDetails> fs1 = fs;
109 frontend::applyLang(fs1, s, Standards::Language::None);
110 auto it = fs1.cbegin();
111 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::CPP); // unknown defaults to C++
112 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C);
113 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::CPP);
114 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C);
115 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::CPP);
116 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C); // markup files are always C
117 }
118
119 // language to enforce (C)
120 {
121 std::list<FileWithDetails> fs1 = fs;
122 frontend::applyLang(fs1, s, Standards::Language::C);
123 auto it = fs1.cbegin();
124 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C);
125 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C);
126 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C);
127 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C);
128 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C);
129 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C); // markup files are always C
130 }
131
132 // language to enforce (C++)
133 {
134 std::list<FileWithDetails> fs1 = fs;
135 frontend::applyLang(fs1, s, Standards::Language::CPP);
136 auto it = fs1.cbegin();
137 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::CPP);
138 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::CPP);
139 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::CPP);
140 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::CPP);
141 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::CPP);
142 ASSERT_EQUALS_ENUM((it++)->lang(), Standards::Language::C); // markup files are always C
143 }
144 }
145};
146
147REGISTER_TEST(TestFrontend)

Callers

nothing calls this directly

Calls 3

applyLangFunction · 0.85
buildMethod · 0.80
langMethod · 0.80

Tested by

no test coverage detected