aboutsummaryrefslogtreecommitdiff
path: root/games
Commit message (Expand)AuthorAge
...
* Remove mapgen_air alias (#935)0gb.us2013-10-05
* Add mapgen_stair_cobble alias to minimalSfan52013-09-06
* Add support for different drowning damage and allow drowning in other nodetypesBlockMen2013-08-06
* Add drowningPilzAdam2013-06-19
* Compress texturesDavid Gumberg2013-06-18
* Move scriptapi to separate folder (by sapier)sapier2013-05-25
* Use the group "soil" for nodes that saplings grow onShadowNinja2013-05-20
* games/minimal: Add menu/background.png and menu/icon.pngPerttu Ahola2013-05-02
* Add Mapgen V7, reorganize biomeskwolekr2013-04-07
* unkn own block -> unkn own nodekhonkhortisan2013-04-05
* Add different place sound for nodesPilzAdam2013-03-29
* Use minetest.register_ore() in minimalPilzAdam2013-03-24
* Mapgen indev: float islands, larger far biomesproller2013-03-24
* Liquid fine tuningproller2013-03-14
* new adjustable finite liquidproller2013-02-24
* Readded and optimized mapgen V6kwolekr2013-01-21
* Add initial Lua biomedef support, fixed biome selectionkwolekr2013-01-21
* Add the group attached_nodePilzAdam2012-12-01
* Swap out pixel-perfect nyan cat by request of Chris TorresPerttu Ahola2012-11-09
* Add functions to the default mod of minimal game to support old codePilzAdam2012-11-01
* Move falling to builtinPilzAdam2012-10-31
* Fix crash when furnace is full (minimal game)Perttu Ahola2012-08-12
* Deprecate minetest.add_to_creative_inventory and use group not_in_creative_in...Perttu Ahola2012-07-25
* Add notice in the minimal gamePerttu Ahola2012-07-25
* Improve inventory callbacks a bitPerttu Ahola2012-07-25
* Detached inventory callbacks and reworked node metadata callbacksPerttu Ahola2012-07-25
* Detached inventoriesPerttu Ahola2012-07-24
* Add node timer test in minimal/experimentalPerttu Ahola2012-07-24
* Move /give, /giveme, /spawnentity and /pulverize to builtin/chatcommands.luaPerttu Ahola2012-07-23
* Formspec button_exit[] and image_button_exit[]Perttu Ahola2012-07-22
* Add /test1 command to minimal for testing a more complicated player inventory...Perttu Ahola2012-07-22
* Implement formspecdarkrose2012-07-22
* Actually fix facedir-rotated nodes placed using minetest.env:place_node()Perttu Ahola2012-07-21
* Make lava buckets work as fuel in minimal gamedarkrose2012-07-21
* Allow defining player's inventory form in LuaPerttu Ahola2012-07-19
* Custom boxy nodes (stairs, slabs) and collision changesKahrl2012-06-17
* Revert back proper crack texturePerttu Ahola2012-06-16
* Allow node cracking animations of any lengthPerttu Ahola2012-06-16
* Update field names to non-deprecated ones in node definition prototypePerttu Ahola2012-06-16
* Use new field names and reorder fields a bit in minimal gamePerttu Ahola2012-06-16
* Node texture animationPerttu Ahola2012-06-16
* Add experimental_tester_tool_1.png to minimal game (was accidentally left out)Perttu Ahola2012-06-08
* Allow groups in crafting recipesPerttu Ahola2012-06-06
* Add after_destruct and cache the existence of on_construct, on_destruct and a...Perttu Ahola2012-06-05
* place_node, dig_node and punch_node; an in-game tester tool; remove old codePerttu Ahola2012-06-05
* Add InvRef:is_empty(listname) and make chests/furnaces not diggable if not em...darkrose2012-06-03
* fix locked chest to not destroy denied items (minimal game)darkrose2012-06-03
* Add fire visualization to minimal furnace menuPerttu Ahola2012-06-03
* Use proper furnace cook timePerttu Ahola2012-06-03
* Lua implementation of furnace with visible active statedarkrose2012-06-03
="hl opt">(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 TestFilePath::testIsDirDelimiter() { 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 } void TestFilePath::testPathStartsWith() { 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, true elsewhere 3 = returns true on windows, false 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); } } } void TestFilePath::testRemoveLastPathComponent() { std::string path, result, removed; 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")); } void TestFilePath::testRemoveLastPathComponentWithTrailingDelimiter() { std::string path, result, removed; 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")); } void TestFilePath::testRemoveRelativePathComponent() { std::string path, result, removed; 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("../a"); 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")); }