mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Replace C++ mainmenu by formspec powered one
This commit is contained in:
parent
fe4ce03d52
commit
967121a34b
37 changed files with 8058 additions and 3949 deletions
208
src/test.cpp
208
src/test.cpp
|
@ -36,6 +36,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "settings.h"
|
||||
#include "log.h"
|
||||
#include "util/string.h"
|
||||
#include "filesys.h"
|
||||
#include "voxelalgorithms.h"
|
||||
#include "inventory.h"
|
||||
#include "util/numeric.h"
|
||||
|
@ -171,6 +172,212 @@ struct TestUtilities: public TestBase
|
|||
}
|
||||
};
|
||||
|
||||
struct TestPath: public TestBase
|
||||
{
|
||||
// adjusts a POSIX path to system-specific conventions
|
||||
// -> changes '/' to DIR_DELIM
|
||||
// -> absolute paths start with "C:\\" on windows
|
||||
std::string p(std::string path)
|
||||
{
|
||||
for(size_t i = 0; i < path.size(); ++i){
|
||||
if(path[i] == '/'){
|
||||
path.replace(i, 1, DIR_DELIM);
|
||||
i += std::string(DIR_DELIM).size() - 1; // generally a no-op
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
if(path[0] == '\\')
|
||||
path = "C:" + path;
|
||||
#endif
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
void Run()
|
||||
{
|
||||
std::string path, result, removed;
|
||||
|
||||
/*
|
||||
Test fs::IsDirDelimiter
|
||||
*/
|
||||
UASSERT(fs::IsDirDelimiter('/') == true);
|
||||
UASSERT(fs::IsDirDelimiter('A') == false);
|
||||
UASSERT(fs::IsDirDelimiter(0) == false);
|
||||
#ifdef _WIN32
|
||||
UASSERT(fs::IsDirDelimiter('\\') == true);
|
||||
#else
|
||||
UASSERT(fs::IsDirDelimiter('\\') == false);
|
||||
#endif
|
||||
|
||||
/*
|
||||
Test fs::PathStartsWith
|
||||
*/
|
||||
{
|
||||
const int numpaths = 12;
|
||||
std::string paths[numpaths] = {
|
||||
"",
|
||||
p("/"),
|
||||
p("/home/user/minetest"),
|
||||
p("/home/user/minetest/bin"),
|
||||
p("/home/user/.minetest"),
|
||||
p("/tmp/dir/file"),
|
||||
p("/tmp/file/"),
|
||||
p("/tmP/file"),
|
||||
p("/tmp"),
|
||||
p("/tmp/dir"),
|
||||
p("/home/user2/minetest/worlds"),
|
||||
p("/home/user2/minetest/world"),
|
||||
};
|
||||
/*
|
||||
expected fs::PathStartsWith results
|
||||
0 = returns false
|
||||
1 = returns true
|
||||
2 = returns false on windows, false elsewhere
|
||||
3 = returns true on windows, true elsewhere
|
||||
4 = returns true if and only if
|
||||
FILESYS_CASE_INSENSITIVE is true
|
||||
*/
|
||||
int expected_results[numpaths][numpaths] = {
|
||||
{1,2,0,0,0,0,0,0,0,0,0,0},
|
||||
{1,1,0,0,0,0,0,0,0,0,0,0},
|
||||
{1,1,1,0,0,0,0,0,0,0,0,0},
|
||||
{1,1,1,1,0,0,0,0,0,0,0,0},
|
||||
{1,1,0,0,1,0,0,0,0,0,0,0},
|
||||
{1,1,0,0,0,1,0,0,1,1,0,0},
|
||||
{1,1,0,0,0,0,1,4,1,0,0,0},
|
||||
{1,1,0,0,0,0,4,1,4,0,0,0},
|
||||
{1,1,0,0,0,0,0,0,1,0,0,0},
|
||||
{1,1,0,0,0,0,0,0,1,1,0,0},
|
||||
{1,1,0,0,0,0,0,0,0,0,1,0},
|
||||
{1,1,0,0,0,0,0,0,0,0,0,1},
|
||||
};
|
||||
|
||||
for (int i = 0; i < numpaths; i++)
|
||||
for (int j = 0; j < numpaths; j++){
|
||||
/*verbosestream<<"testing fs::PathStartsWith(\""
|
||||
<<paths[i]<<"\", \""
|
||||
<<paths[j]<<"\")"<<std::endl;*/
|
||||
bool starts = fs::PathStartsWith(paths[i], paths[j]);
|
||||
int expected = expected_results[i][j];
|
||||
if(expected == 0){
|
||||
UASSERT(starts == false);
|
||||
}
|
||||
else if(expected == 1){
|
||||
UASSERT(starts == true);
|
||||
}
|
||||
#ifdef _WIN32
|
||||
else if(expected == 2){
|
||||
UASSERT(starts == false);
|
||||
}
|
||||
else if(expected == 3){
|
||||
UASSERT(starts == true);
|
||||
}
|
||||
#else
|
||||
else if(expected == 2){
|
||||
UASSERT(starts == true);
|
||||
}
|
||||
else if(expected == 3){
|
||||
UASSERT(starts == false);
|
||||
}
|
||||
#endif
|
||||
else if(expected == 4){
|
||||
UASSERT(starts == (bool)FILESYS_CASE_INSENSITIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Test fs::RemoveLastPathComponent
|
||||
*/
|
||||
UASSERT(fs::RemoveLastPathComponent("") == "");
|
||||
path = p("/home/user/minetest/bin/..//worlds/world1");
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 0);
|
||||
UASSERT(result == path);
|
||||
UASSERT(removed == "");
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 1);
|
||||
UASSERT(result == p("/home/user/minetest/bin/..//worlds"));
|
||||
UASSERT(removed == p("world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 2);
|
||||
UASSERT(result == p("/home/user/minetest/bin/.."));
|
||||
UASSERT(removed == p("worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 3);
|
||||
UASSERT(result == p("/home/user/minetest/bin"));
|
||||
UASSERT(removed == p("../worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 4);
|
||||
UASSERT(result == p("/home/user/minetest"));
|
||||
UASSERT(removed == p("bin/../worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 5);
|
||||
UASSERT(result == p("/home/user"));
|
||||
UASSERT(removed == p("minetest/bin/../worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 6);
|
||||
UASSERT(result == p("/home"));
|
||||
UASSERT(removed == p("user/minetest/bin/../worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 7);
|
||||
#ifdef _WIN32
|
||||
UASSERT(result == "C:");
|
||||
#else
|
||||
UASSERT(result == "");
|
||||
#endif
|
||||
UASSERT(removed == p("home/user/minetest/bin/../worlds/world1"));
|
||||
|
||||
/*
|
||||
Now repeat the test with a trailing delimiter
|
||||
*/
|
||||
path = p("/home/user/minetest/bin/..//worlds/world1/");
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 0);
|
||||
UASSERT(result == path);
|
||||
UASSERT(removed == "");
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 1);
|
||||
UASSERT(result == p("/home/user/minetest/bin/..//worlds"));
|
||||
UASSERT(removed == p("world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 2);
|
||||
UASSERT(result == p("/home/user/minetest/bin/.."));
|
||||
UASSERT(removed == p("worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 3);
|
||||
UASSERT(result == p("/home/user/minetest/bin"));
|
||||
UASSERT(removed == p("../worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 4);
|
||||
UASSERT(result == p("/home/user/minetest"));
|
||||
UASSERT(removed == p("bin/../worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 5);
|
||||
UASSERT(result == p("/home/user"));
|
||||
UASSERT(removed == p("minetest/bin/../worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 6);
|
||||
UASSERT(result == p("/home"));
|
||||
UASSERT(removed == p("user/minetest/bin/../worlds/world1"));
|
||||
result = fs::RemoveLastPathComponent(path, &removed, 7);
|
||||
#ifdef _WIN32
|
||||
UASSERT(result == "C:");
|
||||
#else
|
||||
UASSERT(result == "");
|
||||
#endif
|
||||
UASSERT(removed == p("home/user/minetest/bin/../worlds/world1"));
|
||||
|
||||
/*
|
||||
Test fs::RemoveRelativePathComponent
|
||||
*/
|
||||
path = p("/home/user/minetest/bin");
|
||||
result = fs::RemoveRelativePathComponents(path);
|
||||
UASSERT(result == path);
|
||||
path = p("/home/user/minetest/bin/../worlds/world1");
|
||||
result = fs::RemoveRelativePathComponents(path);
|
||||
UASSERT(result == p("/home/user/minetest/worlds/world1"));
|
||||
path = p("/home/user/minetest/bin/../worlds/world1/");
|
||||
result = fs::RemoveRelativePathComponents(path);
|
||||
UASSERT(result == p("/home/user/minetest/worlds/world1"));
|
||||
path = p(".");
|
||||
result = fs::RemoveRelativePathComponents(path);
|
||||
UASSERT(result == "");
|
||||
path = p("./subdir/../..");
|
||||
result = fs::RemoveRelativePathComponents(path);
|
||||
UASSERT(result == "");
|
||||
path = p("/a/b/c/.././../d/../e/f/g/../h/i/j/../../../..");
|
||||
result = fs::RemoveRelativePathComponents(path);
|
||||
UASSERT(result == p("/a/e"));
|
||||
}
|
||||
};
|
||||
|
||||
struct TestSettings: public TestBase
|
||||
{
|
||||
void Run()
|
||||
|
@ -1785,6 +1992,7 @@ void run_tests()
|
|||
|
||||
infostream<<"run_tests() started"<<std::endl;
|
||||
TEST(TestUtilities);
|
||||
TEST(TestPath);
|
||||
TEST(TestSettings);
|
||||
TEST(TestCompress);
|
||||
TEST(TestSerialization);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue