public void CorrectShapedRecipeDifferentPlacementTest()
		{
			var stick = FrameworkRegistry.GetItem("Stick");
			var stone = FrameworkRegistry.GetItem("Stone");

			var shapedRecipe = new ShapedTestingRecipe();
			
			var craftingField = new Container(16) { Width = 4 };
			craftingField.Add(1, new ItemStack(stone));
			craftingField.Add(5, new ItemStack(stick));
			craftingField.Add(9, new ItemStack(stick, 12));

			Assert.IsTrue(shapedRecipe.CheckRecipe(craftingField));
		}
		public void ItemContainerAdditionTest()
		{
			// Percentage amount in the ItemStacks
			float p1 = 0.8f;
			float p2 = 0.6f;
			float p3 = p1 + p2 - 1;

			// Stack sizes
			int q1 = (int)(Common.ItemStackSize * p1);
			int q2 = (int)(Common.ItemStackSize * p2);
			int q3 = (int)(Common.ItemStackSize * p3);

			// ItemStacks
			ItemStack i1 = common.GetItemStack(q1);
			ItemStack i2 = common.GetItemStack(q2);

			// Container
			Container container = new Container(2);
			
			// Add ItemStacks to the Container
			container.Add(i1, i2);

			// Check that the first ItemStack got filled up
			Assert.AreEqual(Common.ItemStackSize, container.Get(0).Amount);

			// Check that the right amount is in the second ItemStack
			Assert.AreEqual(q3, container.Get(1).Amount);

			// Check that the right amount is returned
			Assert.AreEqual(Common.ItemStackSize + q3, container.Count(common.GetItem().GetType()));
		}
		public void IncorrectShapelessAmount()
		{
			var stick = FrameworkRegistry.GetItem("Stick");
			var stone = FrameworkRegistry.GetItem("Stone");

			var stoneStack = new ItemStack(stone, 2);
			var stoneStack2 = new ItemStack(stone, 2);
			var stickStack = new ItemStack(stick, 12);

			var recipe = new TestSpadeRecipe();

			var craftingField = new Container(16) { Width = 4 };
			craftingField.Add(0, stoneStack);
			craftingField.Add(4, stickStack);
			craftingField.Add(12, stoneStack2);

			Assert.IsFalse(recipe.CheckRecipe(craftingField));
		}
		public void IncorrectInputItemsPlacementTest()
		{
			var stick = FrameworkRegistry.GetItem("Stick");
			var stone = FrameworkRegistry.GetItem("Stone");

			var shapedRecipe = new ShapedTestingRecipe();

			var craftingField = new Container(16) { Width = 4 };
			craftingField.Add(1, new ItemStack(stone));
			craftingField.Add(6, new ItemStack(stone));
			craftingField.Add(10, new ItemStack(stick,12));
			craftingField.Add(14, new ItemStack(stick));

			Assert.IsFalse(shapedRecipe.CheckRecipe(craftingField));

			craftingField.Remove(1);
			var testItem = new UnitTestItem();
			craftingField.Add(1, new ItemStack(testItem));

			Assert.IsFalse(shapedRecipe.CheckRecipe(craftingField));
		}
		public void ItemContainerValidatorDeniedTest()
		{
			ItemStack i1 = new ItemStack(FrameworkRegistry.GetItem("Spade"), false, true);
			Container container = new Container(1);

			container.Validator += (int index, ItemStack itemStack, System.ComponentModel.CancelEventArgs args) =>
			{
				args.Cancel = true;
			};

			container.Add(i1);

			Assert.AreEqual(null, container.Get(0));
		}
		public void ItemContainerEmptyTest()
		{
			ItemStack i1 = new ItemStack(FrameworkRegistry.GetItem("Spade"), false, true);
			Container container = new Container(1);
			Assert.AreEqual(1, container.Items.Length);
			
			container.Add(i1);

			Assert.AreNotEqual(null, container.Get(0));

            container.Get(0).Amount = 0;

			Assert.AreEqual(null, container.Get(0));
		}
		public void IncorrectShapedRecipeAmountsTest()
		{
			var stick = FrameworkRegistry.GetItem("Stick");
			var stone = FrameworkRegistry.GetItem("Stone");

			var shapedRecipe = new ShapedTestingRecipe();

			var craftingField = new Container(16) { Width = 4 };
			craftingField.Add(6, new ItemStack(stone));
			craftingField.Add(10, new ItemStack(stick));
			craftingField.Add(14, new ItemStack(stick, 11));

			Assert.IsFalse(shapedRecipe.CheckRecipe(craftingField));
		}