@@ -51,7 +51,10 @@ class TestErrorLogger : public TestFixture {
5151 TEST_CASE (ErrorMessageConstructLocations);
5252 TEST_CASE (ErrorMessageVerbose);
5353 TEST_CASE (ErrorMessageVerboseLocations);
54+ TEST_CASE (ErrorMessageVerboseSymbol);
55+ TEST_CASE (ErrorMessageVerboseNewline);
5456 TEST_CASE (ErrorMessageFromInternalError);
57+ TEST_CASE (ErrorMessageCode);
5558 TEST_CASE (CustomFormat);
5659 TEST_CASE (CustomFormat2);
5760 TEST_CASE (CustomFormatLocations);
@@ -284,6 +287,27 @@ class TestErrorLogger : public TestFixture {
284287 ASSERT_EQUALS (" [foo.cpp:5] -> [bar.cpp:8]: (error) Verbose error" , msg.toString (true , templateFormat, " " ));
285288 }
286289
290+ void ErrorMessageVerboseSymbol () const {
291+ std::list<ErrorMessage::FileLocation> locs (1 , fooCpp5);
292+ ErrorMessage msg (std::move (locs), " " , Severity::error, " $symbol:sym\n Programming error with $symbol.\n Verbose error about $symbol" , " errorId" , Certainty::normal);
293+ ASSERT_EQUALS (1 , msg.callStack .size ());
294+ ASSERT_EQUALS (" Programming error with sym." , msg.shortMessage ());
295+ ASSERT_EQUALS (" Verbose error about sym" , msg.verboseMessage ());
296+ ASSERT_EQUALS (" [foo.cpp:5]: (error) Programming error with sym." , msg.toString (false , templateFormat, " " ));
297+ ASSERT_EQUALS (" [foo.cpp:5]: (error) Verbose error about sym" , msg.toString (true , templateFormat, " " ));
298+ ASSERT_EQUALS (" sym\n " , msg.symbolNames ());
299+ }
300+
301+ void ErrorMessageVerboseNewline () const {
302+ std::list<ErrorMessage::FileLocation> locs (1 , fooCpp5);
303+ ErrorMessage msg (std::move (locs), " " , Severity::error, " Programming error.\n Verbose error\n Even more verbose" , " errorId" , Certainty::normal);
304+ ASSERT_EQUALS (1 , msg.callStack .size ());
305+ ASSERT_EQUALS (" Programming error." , msg.shortMessage ());
306+ ASSERT_EQUALS (" Verbose error\n Even more verbose" , msg.verboseMessage ());
307+ ASSERT_EQUALS (" [foo.cpp:5]: (error) Programming error." , msg.toString (false , templateFormat, " " ));
308+ ASSERT_EQUALS (" [foo.cpp:5]: (error) Verbose error\n Even more verbose" , msg.toString (true , templateFormat, " " ));
309+ }
310+
287311 void ErrorMessageFromInternalError () const {
288312 // TODO: test with token
289313 {
@@ -341,6 +365,25 @@ class TestErrorLogger : public TestFixture {
341365 testReportType (ReportType::certC, Severity::error, " resourceLeak" , " L3" , " FIO42-C" );
342366 }
343367
368+ void ErrorMessageCode () const {
369+ ScopedFile file (" code.cpp" ,
370+ " int i;\n "
371+ " int i2;\n "
372+ " int i3;\n "
373+ );
374+
375+ ErrorMessage::FileLocation codeCpp3_5{" code.cpp" , 3 , 5 };
376+ std::list<ErrorMessage::FileLocation> locs = { codeCpp3_5 };
377+ ErrorMessage msg (std::move (locs), " " , Severity::error, " Programming error.\n Verbose error" , " errorId" , Certainty::normal);
378+ ASSERT_EQUALS (1 , msg.callStack .size ());
379+ ASSERT_EQUALS (" Programming error." , msg.shortMessage ());
380+ ASSERT_EQUALS (" Verbose error" , msg.verboseMessage ());
381+ ASSERT_EQUALS (" code.cpp:3:5: error: Programming error. [errorId]\n "
382+ " int i3;\n "
383+ " ^" ,
384+ msg.toString (false , " {file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\n {code}" , " " ));
385+ }
386+
344387 void CustomFormat () const {
345388 std::list<ErrorMessage::FileLocation> locs (1 , fooCpp5);
346389 ErrorMessage msg (std::move (locs), " " , Severity::error, " Programming error.\n Verbose error" , " errorId" , Certainty::normal);
0 commit comments