From: Perttu Ahola Date: Sat, 2 Jun 2012 21:33:12 +0000 (+0300) Subject: Add a bit of unit test for inventory X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=e4bc76f55cb3314a6e6cbd47e5dedd1923ad5328;p=zefram%2Fminetest%2Fminetest_engine.git Add a bit of unit test for inventory --- diff --git a/src/test.cpp b/src/test.cpp index cb01edff..ecbf653f 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -37,6 +37,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" #include "utility_string.h" #include "voxelalgorithms.h" +#include "inventory.h" /* Asserts that the exception occurs @@ -650,6 +651,98 @@ struct TestVoxelAlgorithms } }; +struct TestInventory +{ + void Run(IItemDefManager *idef) + { + std::string serialized_inventory = + "List 0 32\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Item default:cobble 61\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Item default:dirt 71\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Item default:dirt 99\n" + "Item default:cobble 38\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "EndInventoryList\n" + "EndInventory\n"; + + std::string serialized_inventory_2 = + "List main 32\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Item default:cobble 61\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Item default:dirt 71\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Item default:dirt 99\n" + "Item default:cobble 38\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "Empty\n" + "EndInventoryList\n" + "EndInventory\n"; + + Inventory inv(idef); + std::istringstream is(serialized_inventory, std::ios::binary); + inv.deSerialize(is); + assert(inv.getList("0")); + assert(!inv.getList("main")); + inv.getList("0")->setName("main"); + assert(!inv.getList("0")); + assert(inv.getList("main")); + std::ostringstream inv_os(std::ios::binary); + inv.serialize(inv_os); + assert(inv_os.str() == serialized_inventory_2); + } +}; + /* NOTE: These tests became non-working then NodeContainer was removed. These should be redone, utilizing some kind of a virtual @@ -1447,6 +1540,7 @@ void run_tests() TESTPARAMS(TestMapNode, ndef); TESTPARAMS(TestVoxelManipulator, ndef); TESTPARAMS(TestVoxelAlgorithms, ndef); + TESTPARAMS(TestInventory, idef); //TEST(TestMapBlock); //TEST(TestMapSector); if(INTERNET_SIMULATOR == false){