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,13 +117,89 @@ 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 ());
123+ ASSERT_EQUALS (" foo.cpp" , loc.getfile ());
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 ());
133+ ASSERT_EQUALS (" foo.cpp" , loc.getfile ());
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+ SimpleTokenList tokenlist (" a" , " dir/a.cpp" );
142+ {
143+ const ErrorMessage::FileLocation loc (tokenlist.front (), &tokenlist.get ());
144+ ASSERT_EQUALS (" dir/a.cpp" , loc.getOrigFile ());
145+ ASSERT_EQUALS (" dir/a.cpp" , loc.getfile ());
146+ ASSERT_EQUALS (1 , loc.line );
147+ ASSERT_EQUALS (1 , loc.column );
148+ ASSERT_EQUALS (" [dir/a.cpp:1]" , loc.stringify (false ));
149+ ASSERT_EQUALS (" [dir/a.cpp:1:1]" , loc.stringify (true ));
150+ ASSERT_EQUALS (" " , loc.getinfo ());
151+ }
152+ {
153+ const ErrorMessage::FileLocation loc (tokenlist.front (), " info" , &tokenlist.get ());
154+ ASSERT_EQUALS (" dir/a.cpp" , loc.getOrigFile ());
155+ ASSERT_EQUALS (" dir/a.cpp" , loc.getfile ());
156+ ASSERT_EQUALS (1 , loc.line );
157+ ASSERT_EQUALS (1 , loc.column );
158+ ASSERT_EQUALS (" [dir/a.cpp:1]" , loc.stringify (false ));
159+ ASSERT_EQUALS (" [dir/a.cpp:1:1]" , loc.stringify (true ));
160+ ASSERT_EQUALS (" info" , loc.getinfo ());
161+ }
162+ }
163+ {
164+ const SimpleTokenList tokenlist (" a" , " dir\\ a.cpp" );
165+ {
166+ const ErrorMessage::FileLocation loc (tokenlist.front (), &tokenlist.get ());
167+ ASSERT_EQUALS (" dir/a.cpp" , loc.getOrigFile ());
168+ ASSERT_EQUALS (" dir/a.cpp" , loc.getfile ());
169+ ASSERT_EQUALS (1 , loc.line );
170+ ASSERT_EQUALS (1 , loc.column );
171+ ASSERT_EQUALS (" [dir/a.cpp:1]" , loc.stringify (false ));
172+ ASSERT_EQUALS (" [dir/a.cpp:1:1]" , loc.stringify (true ));
173+ ASSERT_EQUALS (" " , loc.getinfo ());
174+ }
175+ {
176+ const ErrorMessage::FileLocation loc (tokenlist.front (), " info" , &tokenlist.get ());
177+ ASSERT_EQUALS (" dir/a.cpp" , loc.getOrigFile ());
178+ ASSERT_EQUALS (" dir/a.cpp" , loc.getfile ());
179+ ASSERT_EQUALS (1 , loc.line );
180+ ASSERT_EQUALS (1 , loc.column );
181+ ASSERT_EQUALS (" [dir/a.cpp:1]" , loc.stringify (false ));
182+ ASSERT_EQUALS (" [dir/a.cpp:1:1]" , loc.stringify (true ));
183+ ASSERT_EQUALS (" info" , loc.getinfo ());
184+ }
185+ }
186+ }
187+
188+ void FileLocationConstructFile () const {
189+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (" dir/a.cpp" , 1 , 1 ).getfile ());
190+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (" dir\\ a.cpp" , 1 , 1 ).getfile ());
191+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (" dir/a.cpp" , " info" , 1 , 1 ).getfile ());
192+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (" dir\\ a.cpp" , " info" , 1 , 1 ).getfile ());
193+ {
194+ const SimpleTokenList tokenlist (" a" , " dir/a.cpp" );
195+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (tokenlist.front (), &tokenlist.get ()).getfile ());
196+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (tokenlist.front (), " info" , &tokenlist.get ()).getfile ());
197+ }
198+ {
199+ const SimpleTokenList tokenlist (" a" , " dir\\ a.cpp" );
200+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (tokenlist.front (), &tokenlist.get ()).getfile ());
201+ ASSERT_EQUALS (" dir/a.cpp" , ErrorMessage::FileLocation (tokenlist.front (), " info" , &tokenlist.get ()).getfile ());
202+ }
125203 }
126204
127205 void FileLocationSetFile () const {
@@ -295,7 +373,7 @@ class TestErrorLogger : public TestFixture {
295373 ASSERT_EQUALS (" <error id=\" id\" severity=\" warning\" msg=\"\" verbose=\"\" remark=\" remark\" />" , msg.toXML ());
296374 }
297375
298- void ToXmlV2Locations () const {
376+ void ToXmlLocations () const {
299377 const ErrorMessage::FileLocation dir1loc{" dir1/a.cpp" , 1 , 1 };
300378 const ErrorMessage::FileLocation dir2loc{" dir2\\ a.cpp" , 1 , 1 };
301379 ErrorMessage::FileLocation dir3loc{" dir/a.cpp" , 1 , 1 };
@@ -310,7 +388,7 @@ class TestErrorLogger : public TestFixture {
310388 message += " <location file=\" bar.cpp\" line=\" 8\" column=\" 1\" info=\"\\ 303\\ 244\" />\n " ;
311389 message += " <location file=\" foo.cpp\" line=\" 5\" column=\" 1\" />\n " ;
312390 message += " <location file=\" dir1/a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
313- message += " <location file=\" dir2\\ a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
391+ message += " <location file=\" dir2/ a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
314392 message += " <location file=\" dir3/a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
315393 message += " <location file=\" dir4/a.cpp\" line=\" 1\" column=\" 1\" />\n " ;
316394 message += " </error>" ;
0 commit comments