Fix a bug affecting TerraGear, and extend unit-tests to cover this. (SGPath::file returned an empty string for paths with no directory separator)

This commit is contained in:
James Turner
2011-10-28 12:57:07 +01:00
parent e34f597fe2
commit f14ffd5b1d
2 changed files with 14 additions and 5 deletions

View File

@@ -135,6 +135,14 @@ int main(int argc, char* argv[])
#else
COMPARE(d1.str_native(), std::string("/usr/local"));
#endif
// paths with only the file components
SGPath pf("something.txt.gz");
COMPARE(pf.base(), "something.txt");
COMPARE(pf.file(), "something.txt.gz");
COMPARE(pf.dir(), "");
COMPARE(pf.lower_extension(), "gz");
COMPARE(pf.complete_lower_extension(), "txt.gz");
test_dir();

View File

@@ -175,12 +175,13 @@ void SGPath::concat( const string& p ) {
// Get the file part of the path (everything after the last path sep)
string SGPath::file() const {
int index = path.rfind(sgDirPathSep);
if (index >= 0) {
return path.substr(index + 1);
string SGPath::file() const
{
string::size_type index = path.rfind(sgDirPathSep);
if (index != string::npos) {
return path.substr(index + 1);
} else {
return "";
return path;
}
}