mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 01:05:48 +01:00 
			
		
		
		
	Add a bit of unit test for inventory
This commit is contained in:
		
							
								
								
									
										94
									
								
								src/test.cpp
									
									
									
									
									
								
							
							
						
						
									
										94
									
								
								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){
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user