2121#include " errorlogger.h"
2222#include " errortypes.h"
2323#include " fixture.h"
24+ #include " helpers.h"
2425#include " suppressions.h"
2526
2627#include < list>
@@ -43,6 +44,7 @@ class TestErrorLogger : public TestFixture {
4344 void run () override {
4445 TEST_CASE (PatternSearchReplace);
4546 TEST_CASE (FileLocationConstruct);
47+ TEST_CASE (FileLocationConstructFile);
4648 TEST_CASE (FileLocationSetFile);
4749 TEST_CASE (FileLocationSetFile2);
4850 TEST_CASE (ErrorMessageConstruct);
@@ -55,7 +57,7 @@ class TestErrorLogger : public TestFixture {
5557 TEST_CASE (CustomFormatLocations);
5658 TEST_CASE (ToXmlV2);
5759 TEST_CASE (ToXmlV2RemarkComment);
58- TEST_CASE (ToXmlV2Locations );
60+ TEST_CASE (ToXmlLocations );
5961 TEST_CASE (ToXmlV2Encoding);
6062 TEST_CASE (FromXmlV2);
6163 TEST_CASE (ToXmlV3);
@@ -115,20 +117,116 @@ class TestErrorLogger : public TestFixture {
115117 }
116118
117119 void FileLocationConstruct () const {
118- const ErrorMessage::FileLocation loc (" foo.cpp" , 1 , 2 );
119- ASSERT_EQUALS (" foo.cpp" , loc.getOrigFile ());
120- ASSERT_EQUALS (" foo.cpp" , loc.getfile ());
121- ASSERT_EQUALS (1 , loc.line );
122- ASSERT_EQUALS (2 , loc.column );
123- ASSERT_EQUALS (" [foo.cpp:1]" , loc.stringify (false ));
124- ASSERT_EQUALS (" [foo.cpp:1:2]" , loc.stringify (true ));
120+ {
121+ const ErrorMessage::FileLocation loc (" foo.cpp" , 1 , 2 );
122+ ASSERT_EQUALS (" foo.cpp" , loc.getOrigFile (false ));
123+ ASSERT_EQUALS (" foo.cpp" , loc.getfile (false ));
124+ ASSERT_EQUALS (1 , loc.line );
125+ ASSERT_EQUALS (2 , loc.column );
126+ ASSERT_EQUALS (" [foo.cpp:1]" , loc.stringify (false ));
127+ ASSERT_EQUALS (" [foo.cpp:1:2]" , loc.stringify (true ));
128+ ASSERT_EQUALS (" " , loc.getinfo ());
129+ }
130+ {
131+ const ErrorMessage::FileLocation loc (" foo.cpp" , " info" , 1 , 2 );
132+ ASSERT_EQUALS (" foo.cpp" , loc.getOrigFile (false ));
133+ ASSERT_EQUALS (" foo.cpp" , loc.getfile (false ));
134+ ASSERT_EQUALS (1 , loc.line );
135+ ASSERT_EQUALS (2 , loc.column );
136+ ASSERT_EQUALS (" [foo.cpp:1]" , loc.stringify (false ));
137+ ASSERT_EQUALS (" [foo.cpp:1:2]" , loc.stringify (true ));
138+ ASSERT_EQUALS (" info" , loc.getinfo ());
139+ }
140+ {
141+ const SimpleTokenList tokenlist (" a" , " dir/a.cpp" );
142+ {
143+ const ErrorMessage::FileLocation loc (tokenlist.front (), &tokenlist.get ());
144+ ASSERT_EQUALS (" dir/a.cpp" , loc.getOrigFile (false ));
145+ ASSERT_EQUALS (" dir/a.cpp" , loc.getfile (false ));
146+ ASSERT_EQUALS (1 , loc.line );
147+ ASSERT_EQUALS (1 , loc.column );
148+ #if defined(_WIN32)
149+ ASSERT_EQUALS (" [dir\\ a.cpp:1]" , loc.stringify (false ));
150+ ASSERT_EQUALS (" [dir\\ a.cpp:1:1]" , loc.stringify (true ));
151+ #else
152+ ASSERT_EQUALS (" [dir/a.cpp:1]" , loc.stringify (false ));
153+ ASSERT_EQUALS (" [dir/a.cpp:1:1]" , loc.stringify (true ));
154+ #endif
155+ ASSERT_EQUALS (" " , loc.getinfo ());
156+ }
157+ {
158+ const ErrorMessage::FileLocation loc (tokenlist.front (), " info" , &tokenlist.get ());
159+ ASSERT_EQUALS (" dir/a.cpp" , loc.getOrigFile (false ));
160+ ASSERT_EQUALS (" dir/a.cpp" , loc.getfile (false ));
161+ ASSERT_EQUALS (1 , loc.line );
162+ ASSERT_EQUALS (1 , loc.column );
163+ #if defined(_WIN32)
164+ ASSERT_EQUALS (" [dir\\ a.cpp:1]" , loc.stringify (false ));
165+ ASSERT_EQUALS (" [dir\\ a.cpp:1:1]" , loc.stringify (true ));
166+ #else
167+ ASSERT_EQUALS (" [dir/a.cpp:1]" , loc.stringify (false ));
168+ ASSERT_EQUALS (" [dir/a.cpp:1:1]" , loc.stringify (true ));
169+ #endif
170+ ASSERT_EQUALS (" info" , loc.getinfo ());
171+ }
172+ }
173+ {
174+ const SimpleTokenList tokenlist (" a" , " dir\\ a.cpp" );
175+ {
176+ const ErrorMessage::FileLocation loc (tokenlist.front (), &tokenlist.get ());
177+ ASSERT_EQUALS (" dir\\ a.cpp" , loc.getOrigFile (false ));
178+ ASSERT_EQUALS (" dir/a.cpp" , loc.getfile (false ));
179+ ASSERT_EQUALS (1 , loc.line );
180+ ASSERT_EQUALS (1 , loc.column );
181+ #if defined(_WIN32)
182+ ASSERT_EQUALS (" [dir\\ a.cpp:1]" , loc.stringify (false ));
183+ ASSERT_EQUALS (" [dir\\ a.cpp:1:1]" , loc.stringify (true ));
184+ #else
185+ ASSERT_EQUALS (" [dir/a.cpp:1]" , loc.stringify (false ));
186+ ASSERT_EQUALS (" [dir/a.cpp:1:1]" , loc.stringify (true ));
187+ #endif
188+ ASSERT_EQUALS (" " , loc.getinfo ());
189+ }
190+ {
191+ const ErrorMessage::FileLocation loc (tokenlist.front (), " info" , &tokenlist.get ());
192+ ASSERT_EQUALS (" dir\\ a.cpp" , loc.getOrigFile (false ));
193+ ASSERT_EQUALS (" dir/a.cpp" , loc.getfile (false ));
194+ ASSERT_EQUALS (1 , loc.line );
195+ ASSERT_EQUALS (1 , loc.column );
196+ #if defined(_WIN32)
197+ ASSERT_EQUALS (" [dir\\ a.cpp:1]" , loc.stringify (false ));
198+ ASSERT_EQUALS (" [dir\\ a.cpp:1:1]" , loc.stringify (true ));
199+ #else
200+ ASSERT_EQUALS (" [dir/a.cpp:1]" , loc.stringify (false ));
201+ ASSERT_EQUALS (" [dir/a.cpp:1:1]" , loc.stringify (true ));
202+ #endif
203+ ASSERT_EQUALS (" info" , loc.getinfo ());
204+ }
205+ }
206+ }
207+
208+ void FileLocationConstructFile () const {
209+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (" dir/a.cpp" , 1 , 1 ).getfile (false ));
210+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (" dir\\ a.cpp" , 1 , 1 ).getfile (false ));
211+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (" dir/a.cpp" , " info" , 1 , 1 ).getfile (false ));
212+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (" dir\\ a.cpp" , " info" , 1 , 1 ).getfile (false ));
213+ {
214+ const SimpleTokenList tokenlist (" a" , " dir/a.cpp" );
215+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (tokenlist.front (), &tokenlist.get ()).getfile (false ));
216+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (tokenlist.front (), " info" , &tokenlist.get ()).getfile (false ));
217+ }
218+ {
219+ const SimpleTokenList tokenlist (" a" , " dir\\ a.cpp" );
220+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (tokenlist.front (), &tokenlist.get ()).getfile (false ));
221+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (tokenlist.front (), " info" , &tokenlist.get ()).getfile (false ));
222+ }
125223 }
126224
127225 void FileLocationSetFile () const {
128226 ErrorMessage::FileLocation loc (" foo1.cpp" , 0 , 0 );
129227 loc.setfile (" foo.cpp" );
130- ASSERT_EQUALS (" foo1.cpp" , loc.getOrigFile ());
131- ASSERT_EQUALS (" foo.cpp" , loc.getfile ());
228+ ASSERT_EQUALS (" foo1.cpp" , loc.getOrigFile (false ));
229+ ASSERT_EQUALS (" foo.cpp" , loc.getfile (false ));
132230 ASSERT_EQUALS (0 , loc.line );
133231 ASSERT_EQUALS (0 , loc.column );
134232 // TODO: the following looks wrong - there is no line or column 0
@@ -139,8 +237,8 @@ class TestErrorLogger : public TestFixture {
139237 void FileLocationSetFile2 () const {
140238 ErrorMessage::FileLocation loc (" foo1.cpp" , SuppressionList::Suppression::NO_LINE, 0 ); // TODO: should not depend on Suppression
141239 loc.setfile (" foo.cpp" );
142- ASSERT_EQUALS (" foo1.cpp" , loc.getOrigFile ());
143- ASSERT_EQUALS (" foo.cpp" , loc.getfile ());
240+ ASSERT_EQUALS (" foo1.cpp" , loc.getOrigFile (false ));
241+ ASSERT_EQUALS (" foo.cpp" , loc.getfile (false ));
144242 ASSERT_EQUALS (SuppressionList::Suppression::NO_LINE, loc.line );
145243 ASSERT_EQUALS (0 , loc.column );
146244 ASSERT_EQUALS (" [foo.cpp]" , loc.stringify (false ));
@@ -295,7 +393,7 @@ class TestErrorLogger : public TestFixture {
295393 ASSERT_EQUALS (" <error id=\" id\" severity=\" warning\" msg=\"\" verbose=\"\" remark=\" remark\" />" , msg.toXML ());
296394 }
297395
298- void ToXmlV2Locations () const {
396+ void ToXmlLocations () const {
299397 const ErrorMessage::FileLocation dir1loc{" dir1/a.cpp" , 1 , 1 };
300398 const ErrorMessage::FileLocation dir2loc{" dir2\\ a.cpp" , 1 , 1 };
301399 ErrorMessage::FileLocation dir3loc{" dir/a.cpp" , 1 , 1 };
@@ -310,7 +408,7 @@ class TestErrorLogger : public TestFixture {
310408 message += " <location file=\" bar.cpp\" line=\" 8\" column=\" 1\" info=\"\\ 303\\ 244\" />\n " ;
311409 message += " <location file=\" foo.cpp\" line=\" 5\" column=\" 1\" />\n " ;
312410 message += " <location file=\" dir1/a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
313- message += " <location file=\" dir2\\ a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
411+ message += " <location file=\" dir2/ a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
314412 message += " <location file=\" dir3/a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
315413 message += " <location file=\" dir4/a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
316414 message += " </error>" ;
@@ -360,10 +458,10 @@ class TestErrorLogger : public TestFixture {
360458 ASSERT_EQUALS (" Verbose error" , msg.verboseMessage ());
361459 ASSERT_EQUALS (456u , msg.hash );
362460 ASSERT_EQUALS (2u , msg.callStack .size ());
363- ASSERT_EQUALS (" foo.cpp" , msg.callStack .front ().getfile ());
461+ ASSERT_EQUALS (" foo.cpp" , msg.callStack .front ().getfile (false ));
364462 ASSERT_EQUALS (5 , msg.callStack .front ().line );
365463 ASSERT_EQUALS (2u , msg.callStack .front ().column );
366- ASSERT_EQUALS (" bar.cpp" , msg.callStack .back ().getfile ());
464+ ASSERT_EQUALS (" bar.cpp" , msg.callStack .back ().getfile (false ));
367465 ASSERT_EQUALS (8 , msg.callStack .back ().line );
368466 ASSERT_EQUALS (1u , msg.callStack .back ().column );
369467 }
0 commit comments