Add a bit of unit test for inventory
authorPerttu Ahola <celeron55@gmail.com>
Sat, 2 Jun 2012 21:33:12 +0000 (00:33 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Sun, 3 Jun 2012 19:31:02 +0000 (22:31 +0300)
src/test.cpp

index cb01edffdf1511c5b5687ca09b5114a3c2137888..ecbf653f978bc281bc4fd6ec9abe74bd2590ddaa 100644 (file)
@@ -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){