@@ -225,6 +225,12 @@ class TestCmdlineParser : public TestFixture {
225225 TEST_CASE (stdcpp11);
226226 TEST_CASE (stdunknown1);
227227 TEST_CASE (stdunknown2);
228+ TEST_CASE (stdoverwrite1);
229+ TEST_CASE (stdoverwrite2);
230+ TEST_CASE (stdoverwrite3);
231+ TEST_CASE (stdoverwrite4);
232+ TEST_CASE (stdmulti1);
233+ TEST_CASE (stdmulti2);
228234 TEST_CASE (platformWin64);
229235 TEST_CASE (platformWin32A);
230236 TEST_CASE (platformWin32W);
@@ -1369,8 +1375,56 @@ class TestCmdlineParser : public TestFixture {
13691375 void stdunknown2 () {
13701376 REDIRECT;
13711377 const char *const argv[] = {" cppcheck" , " --std=cplusplus11" , " file.cpp" };
1372- TODO_ASSERT_EQUALS (static_cast <int >(CmdLineParser::Result::Fail), static_cast <int >(CmdLineParser::Result::Success), static_cast <int >(parser->parseFromArgs (3 , argv)));
1373- TODO_ASSERT_EQUALS (" cppcheck: error: unknown --std value 'cplusplus11'\n " , " " , logger->str ());
1378+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (3 , argv));
1379+ ASSERT_EQUALS (" cppcheck: error: unknown --std value 'cplusplus11'\n " , logger->str ());
1380+ }
1381+
1382+ void stdoverwrite1 () {
1383+ REDIRECT;
1384+ const char *const argv[] = {" cppcheck" , " --std=c++11" , " --std=c++23" , " file.cpp" };
1385+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (4 , argv));
1386+ ASSERT_EQUALS_ENUM (Standards::CPP23, settings->standards .cpp );
1387+ ASSERT_EQUALS_ENUM (Standards::CLatest, settings->standards .c );
1388+ }
1389+
1390+ void stdoverwrite2 () {
1391+ REDIRECT;
1392+ const char *const argv[] = {" cppcheck" , " --std=c99" , " --std=c11" , " file.cpp" };
1393+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (4 , argv));
1394+ ASSERT_EQUALS_ENUM (Standards::C11, settings->standards .c );
1395+ ASSERT_EQUALS_ENUM (Standards::CPPLatest, settings->standards .cpp );
1396+ }
1397+
1398+ void stdoverwrite3 () {
1399+ REDIRECT;
1400+ const char *const argv[] = {" cppcheck" , " --std=c99" , " --std=c++11" , " --std=c11" , " file.cpp" };
1401+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (5 , argv));
1402+ ASSERT_EQUALS_ENUM (Standards::C11, settings->standards .c );
1403+ ASSERT_EQUALS_ENUM (Standards::CPP11, settings->standards .cpp );
1404+ }
1405+
1406+ void stdoverwrite4 () {
1407+ REDIRECT;
1408+ const char *const argv[] = {" cppcheck" , " --std=c++11" , " --std=c99" , " --std=c++23" , " file.cpp" };
1409+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (5 , argv));
1410+ ASSERT_EQUALS_ENUM (Standards::CPP23, settings->standards .cpp );
1411+ ASSERT_EQUALS_ENUM (Standards::C99, settings->standards .c );
1412+ }
1413+
1414+ void stdmulti1 () {
1415+ REDIRECT;
1416+ const char *const argv[] = {" cppcheck" , " --std=c99" , " --std=c++11" , " file.cpp" };
1417+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (4 , argv));
1418+ ASSERT_EQUALS_ENUM (Standards::C99, settings->standards .c );
1419+ ASSERT_EQUALS_ENUM (Standards::CPP11, settings->standards .cpp );
1420+ }
1421+
1422+ void stdmulti2 () {
1423+ REDIRECT;
1424+ const char *const argv[] = {" cppcheck" , " --std=c++20" , " --std=c11" , " file.cpp" };
1425+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (4 , argv));
1426+ ASSERT_EQUALS_ENUM (Standards::C11, settings->standards .c );
1427+ ASSERT_EQUALS_ENUM (Standards::CPP20, settings->standards .cpp );
13741428 }
13751429
13761430 void platformWin64 () {
0 commit comments