[DEV] continue integration

This commit is contained in:
Edouard DUPIN 2018-09-04 21:50:25 +02:00
parent 0720c3ffca
commit ae40e4a10d
4 changed files with 45 additions and 171 deletions

View File

@ -22,12 +22,8 @@ static etk::String simplifyPath(etk::String _input) {
if (_input.size() == 0) {
return _input;
}
while(currentPos < _input.size()) {
if (_input[currentPos] == '\\') {
_input[currentPos] = '/';
}
currentPos++;
continue;
if (_input[0] == '~') {
_input = etk::fs::getHomePath().getString() + "/" + _input.extract(1);
}
// step 2 : remove all '//'
TK_DBG_MODE("Simplify(2) : '" << _input << "'");
@ -196,8 +192,29 @@ etk::String etk::Path::getRelative() const {
if (isRelative() == true) {
return m_data;
}
// TODO : plouf ...
return "todo";
etk::String execPath = etk::fs::getExecutionPath().getString();
etk::String currentPath = m_data;
etk::Vector<etk::String> execPathSplit = execPath.split('/');
etk::Vector<etk::String> currentPathSplit = currentPath.split('/');
for (size_t iii=0; iii<execPathSplit.size() && iii<currentPathSplit.size(); ++iii) {
if (execPathSplit[0] == currentPathSplit[0]) {
execPathSplit.popFront();
currentPathSplit.popFront();
continue;
}
break;
}
etk::String out = "";
for (size_t iii=0; iii<execPathSplit.size(); ++iii) {
out += "../";
}
for (size_t iii=0; iii<currentPathSplit.size(); ++iii) {
out += currentPathSplit[iii];
if (currentPathSplit.size()-1 != iii) {
out += "/";
}
}
return out;
}
etk::String etk::Path::getRelativeWindows() const {

View File

@ -1,142 +0,0 @@
/**
* @author Edouard DUPIN
*
* @copyright 2011, Edouard DUPIN, all right reserved
*
* @license MPL v2.0 (see license file)
*/
#include <etest/etest.hpp>
#include <test-debug/debug.hpp>
#include <etk/os/FSNode.hpp>
TEST(TestEtkFSNode, checkHomePath) {
etk::String homePath = etk::FSNodeGetHomePath();
EXPECT_EQ(homePath, "/home/heero");
etk::FSNode myNodeTest1("HOME:filePresent.txt");
EXPECT_EQ(myNodeTest1.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest1.getFileSystemName(), homePath + "/filePresent.txt");
EXPECT_EQ(myNodeTest1.getNameFolder(), "/home/heero");
etk::FSNode myNodeTest2("HOME:/filePresent.txt");
EXPECT_EQ(myNodeTest2.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest2.getFileSystemName(), homePath + "/filePresent.txt");
EXPECT_EQ(myNodeTest2.getNameFolder(), "/home/heero");
etk::FSNode myNodeTest3("~/filePresent.txt");
EXPECT_EQ(myNodeTest3.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest3.getFileSystemName(), homePath + "/filePresent.txt");
EXPECT_EQ(myNodeTest3.getNameFolder(), "/home/heero");
}
TEST(TestEtkFSNode, checkDATAFilePresent) {
etk::String fileName("DATA:filePresent.txt");
etk::FSNode myNodeTest1(fileName);
EXPECT_EQ(myNodeTest1.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest1.exist(), true);
bool ret = myNodeTest1.fileOpenRead();
EXPECT_EQ(ret, true);
etk::String data;
ret = myNodeTest1.fileGets(data);
EXPECT_EQ(ret, true);
EXPECT_EQ(data, "plop");
ret = myNodeTest1.fileClose();
EXPECT_EQ(ret, true);
}
TEST(TestEtkFSNode, checkDATAFileEmpty) {
etk::String fileName("DATA:fileEmpty.txt");
etk::FSNode myNodeTest1(fileName);
EXPECT_EQ(myNodeTest1.getNameFile(), "fileEmpty.txt");
EXPECT_EQ(myNodeTest1.exist(), true);
bool ret = myNodeTest1.fileOpenRead();
EXPECT_EQ(ret, true);
etk::String data;
ret = myNodeTest1.fileGets(data);
EXPECT_EQ(ret, false);
EXPECT_EQ(data, "");
ret = myNodeTest1.fileClose();
EXPECT_EQ(ret, true);
}
TEST(TestEtkFSNode, checkDATAFileNotPresent) {
etk::String fileName("DATA:fileNotPresent.txt");
etk::FSNode myNodeTest1(fileName);
EXPECT_EQ(myNodeTest1.getNameFile(), "fileNotPresent.txt");
EXPECT_EQ(myNodeTest1.exist(), false);
}
TEST(TestEtkFSNode, checkType) {
etk::String fileName("USERDATA:myFileTest.txt");
etk::FSNode myNodeTest1(fileName);
EXPECT_EQ(myNodeTest1.getNameFile(), "myFileTest.txt");
EXPECT_EQ(myNodeTest1.exist(), false);
/*
TEST_INFO(" GetNameFolder() ='" << myNodeTest1.getNameFolder() << "'");
TEST_INFO(" GetName() ='" << myNodeTest1.getName() << "'");
TEST_INFO(" GetNameFile() ='" << myNodeTest1.getNameFile() << "'");
TEST_INFO(" GetRelativeFolder() ='" << myNodeTest1.getRelativeFolder() << "'");
TEST_INFO(" getFileSystemName() ='" << myNodeTest1.getFileSystemName() << "'");
TEST_INFO(" exist =" << myNodeTest1.exist());
*/
}
void testFSNode() {
TEST_INFO("==> Start test of FSNode");
etk::String fileName("USERDATA:myFileTest.txt");
etk::FSNode myNodeTest1(fileName);
TEST_INFO("********************************************");
TEST_INFO("** Filename=\"" << fileName << "\"");
TEST_INFO("********************************************");
TEST_INFO(" GetNameFolder() ='" << myNodeTest1.getNameFolder() << "'");
TEST_INFO(" GetName() ='" << myNodeTest1.getName() << "'");
TEST_INFO(" GetNameFile() ='" << myNodeTest1.getNameFile() << "'");
TEST_INFO(" GetRelativeFolder() ='" << myNodeTest1.getRelativeFolder() << "'");
TEST_INFO(" getFileSystemName() ='" << myNodeTest1.getFileSystemName() << "'");
TEST_INFO(" exist =" << myNodeTest1.exist());
if (true==myNodeTest1.exist()) {
TEST_ERROR(" ==> remove the file ==> bad for the test");
} else {
TEST_INFO(" Display time when file does not exist :");
TEST_INFO(" TimeCreatedString() ='" << myNodeTest1.timeCreatedString() << "'");
TEST_INFO(" TimeModifiedString() ='" << myNodeTest1.timeModifiedString() << "'");
TEST_INFO(" TimeAccessedString() ='" << myNodeTest1.timeAccessedString() << "'");
}
myNodeTest1.touch();
if (false==myNodeTest1.exist()) {
TEST_ERROR(" ==> Error, can not create the file ....");
} else {
TEST_INFO(" Display time when file does exist :");
TEST_INFO(" TimeCreatedString() ='" << myNodeTest1.timeCreatedString() << "'");
TEST_INFO(" TimeModifiedString() ='" << myNodeTest1.timeModifiedString() << "'");
TEST_INFO(" TimeAccessedString() ='" << myNodeTest1.timeAccessedString() << "'");
}
etk::FSNode myNodeTest2(fileName);
TEST_INFO("********************************************");
TEST_INFO("** Filename2=\"" << myNodeTest2<< "\"");
TEST_INFO("********************************************");
TEST_INFO(" GetNameFolder() ='" << myNodeTest2.getNameFolder() << "'");
TEST_INFO(" GetName() ='" << myNodeTest2.getName() << "'");
TEST_INFO(" GetNameFile() ='" << myNodeTest2.getNameFile() << "'");
TEST_INFO(" GetRelativeFolder() ='" << myNodeTest2.getRelativeFolder() << "'");
TEST_INFO(" getFileSystemName() ='" << myNodeTest2.getFileSystemName() << "'");
TEST_INFO(" exist =" << myNodeTest2.exist());
if (false==myNodeTest1.exist()) {
TEST_ERROR(" ==> Error, can not create the file ....");
} else {
TEST_INFO(" Display time when file does exist :");
TEST_INFO(" TimeCreatedString() ='" << myNodeTest2.timeCreatedString() << "'");
TEST_INFO(" TimeModifiedString() ='" << myNodeTest2.timeModifiedString() << "'");
TEST_INFO(" TimeAccessedString() ='" << myNodeTest2.timeAccessedString() << "'");
}
// Try remove the file :
myNodeTest1.remove();
if (true==myNodeTest1.exist()) {
TEST_ERROR(" ==> The file might be removed ==> but it is not the case ...");
} else {
TEST_INFO(" ==> The file is removed");
}
TEST_INFO("********************************************");
TEST_INFO("==> Stop test of FSNode");
}

View File

@ -14,21 +14,4 @@ TEST(TestFileSystem, checkHomePath) {
etk::String basicPath = getenv("HOME");
EXPECT_EQ(etk::fs::getHomePath(), basicPath);
}
/*
TEST(TestEtkFSNode, checkHomePath) {
etk::String homePath = etk::FSNodeGetHomePath();
EXPECT_EQ(homePath, "/home/heero");
etk::FSNode myNodeTest1("HOME:filePresent.txt");
EXPECT_EQ(myNodeTest1.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest1.getFileSystemName(), homePath + "/filePresent.txt");
EXPECT_EQ(myNodeTest1.getNameFolder(), "/home/heero");
etk::FSNode myNodeTest2("HOME:/filePresent.txt");
EXPECT_EQ(myNodeTest2.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest2.getFileSystemName(), homePath + "/filePresent.txt");
EXPECT_EQ(myNodeTest2.getNameFolder(), "/home/heero");
etk::FSNode myNodeTest3("~/filePresent.txt");
EXPECT_EQ(myNodeTest3.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest3.getFileSystemName(), homePath + "/filePresent.txt");
EXPECT_EQ(myNodeTest3.getNameFolder(), "/home/heero");
}
*/

View File

@ -140,8 +140,17 @@ TEST(TestPath, parent) {
TEST(TestPath, getRelative) {
etk::Path path("plouf.pdf");
EXPECT_EQ(path.getRelative(), "plouf.pdf");
path = "/plouf.pdf";
EXPECT_EQ(path.getRelative(), "../../../../plouf.pdf");
path = "/ici/plouf.pdf";
etk::String test;
auto elements = etk::fs::getExecutionPath().getString().split('/');
for (size_t iii=0; iii<elements.size(); ++iii) {
if (elements[iii].size() == 0) {
continue;
}
test += "../";
}
test += "ici/plouf.pdf";
EXPECT_EQ(path.getRelative(), test);
}
TEST(TestPath, getAbsolute) {
@ -151,4 +160,11 @@ TEST(TestPath, getAbsolute) {
EXPECT_EQ(path.getAbsolute(), "/plouf.pdf");
}
TEST(TestPath, GetHomePath) {
etk::String basicPath = getenv("HOME");
etk::Path path("~");
EXPECT_EQ(path.getString(), basicPath);
basicPath += "/plouf.php";
path = "~/plouf.php";
EXPECT_EQ(path.getString(), basicPath);
}