Added container extension method tests

This commit is contained in:
Chomp
2025-07-04 15:25:08 +01:00
parent 8837c26584
commit a0d50f8ffc
@@ -0,0 +1,340 @@
using SPTarkov.Server.Core.Extensions;
namespace UnitTests.Tests.Extensions;
[TestClass]
public partial class ContainerExtensionsTests
{
[TestInitialize]
public void Initialize() { }
[TestMethod]
public void CanItemBePlacedInContainerAtPosition_1x1_Item_Fits_1x2_Container_At_0x0()
{
var container = new int[1, 2];
var itemStartXPos = 0;
var itemStartYPos = 0;
var itemWidth = 1;
var itemHeight = 1;
var result = container.CanItemBePlacedInContainerAtPosition(
itemStartXPos,
itemStartYPos,
itemWidth,
itemHeight
);
Assert.IsTrue(result);
}
[TestMethod]
public void CanItemBePlacedInContainerAtPosition_1x1_Item_Fails_1x2_Container_At_0x0_With_Item_At_0x0()
{
var container = new int[1, 2];
container[0, 0] = 1;
var itemStartXPos = 0;
var itemStartYPos = 0;
var itemWidth = 1;
var itemHeight = 1;
var result = container.CanItemBePlacedInContainerAtPosition(
itemStartXPos,
itemStartYPos,
itemWidth,
itemHeight
);
Assert.IsFalse(result);
}
[TestMethod]
public void CanItemBePlacedInContainerAtPosition_1x2_Item_Fits_1x2_Container_At_0x0()
{
var container = new int[1, 2];
var itemStartXPos = 0;
var itemStartYPos = 0;
var itemWidth = 1;
var itemHeight = 2;
var result = container.CanItemBePlacedInContainerAtPosition(
itemStartXPos,
itemStartYPos,
itemWidth,
itemHeight
);
Assert.IsTrue(result);
}
[TestMethod]
public void CanItemBePlacedInContainerAtPosition_1x2_Item_Fails_1x2_Container_At_0x0_With_Item_At_0x0()
{
var container = new int[1, 2];
container[0, 0] = 1;
var itemStartXPos = 0;
var itemStartYPos = 0;
var itemWidth = 1;
var itemHeight = 2;
var result = container.CanItemBePlacedInContainerAtPosition(
itemStartXPos,
itemStartYPos,
itemWidth,
itemHeight
);
Assert.IsFalse(result);
}
[TestMethod]
public void CanItemBePlacedInContainerAtPosition_2x2_Item_Fits_2x2_Container_At_0x0()
{
var container = new int[2, 2];
var itemStartXPos = 0;
var itemStartYPos = 0;
var itemWidth = 2;
var itemHeight = 2;
var result = container.CanItemBePlacedInContainerAtPosition(
itemStartXPos,
itemStartYPos,
itemWidth,
itemHeight
);
Assert.IsTrue(result);
}
[TestMethod]
public void CanItemBePlacedInContainerAtPosition_1x2_Item_Fits_2x2_Container_At_0x1()
{
var container = new int[2, 2];
var itemStartXPos = 1;
var itemStartYPos = 0;
var itemWidth = 1;
var itemHeight = 2;
var result = container.CanItemBePlacedInContainerAtPosition(
itemStartXPos,
itemStartYPos,
itemWidth,
itemHeight
);
Assert.IsTrue(result);
}
}
public partial class ContainerExtensionsTests
{
[TestMethod]
public void FindSlotForItem_1x1_item_fits_1x1_container_no_rotation()
{
var container = new int[1, 1];
var itemWidth = 1;
var itemHeight = 1;
var result = container.FindSlotForItem(itemWidth, itemHeight);
Assert.IsTrue(result.Success);
Assert.IsFalse(result.Rotation);
Assert.AreEqual(result.X, 0);
Assert.AreEqual(result.Y, 0);
}
[TestMethod]
public void FindSlotForItem_1x1_item_fails_1x1_container_no_space()
{
var container = new int[1, 1];
container[0, 0] = 1;
var itemWidth = 1;
var itemHeight = 1;
var result = container.FindSlotForItem(itemWidth, itemHeight);
Assert.IsFalse(result.Success);
}
[TestMethod]
public void FindSlotForItem_1x2_item_fits_1x2_container_no_rotation()
{
var container = new int[1, 2];
var itemWidth = 1;
var itemHeight = 2;
var result = container.FindSlotForItem(itemWidth, itemHeight);
Assert.IsTrue(result.Success);
Assert.IsFalse(result.Rotation);
Assert.AreEqual(result.X, 0);
Assert.AreEqual(result.Y, 0);
}
[TestMethod]
public void FindSlotForItem_1x2_item_fails_1x2_container_no_space()
{
var container = new int[1, 1];
container[0, 0] = 1;
container[0, 0] = 1;
var itemWidth = 1;
var itemHeight = 2;
var result = container.FindSlotForItem(itemWidth, itemHeight);
Assert.IsFalse(result.Success);
}
[TestMethod]
public void FindSlotForItem_2x2_item_fits_2x2_container_no_rotation()
{
var container = new int[2, 2];
var itemWidth = 2;
var itemHeight = 2;
var result = container.FindSlotForItem(itemWidth, itemHeight);
Assert.IsTrue(result.Success);
Assert.IsFalse(result.Rotation);
Assert.AreEqual(result.X, 0);
Assert.AreEqual(result.Y, 0);
}
[TestMethod]
public void FindSlotForItem_1x2_item_fits_2x2_container_no_rotation_with_item_at_0x0()
{
var container = new int[2, 2];
container[0, 0] = 1;
var itemWidth = 1;
var itemHeight = 2;
var result = container.FindSlotForItem(itemWidth, itemHeight);
Assert.IsTrue(result.Success);
Assert.IsFalse(result.Rotation);
Assert.AreEqual(result.X, 1);
Assert.AreEqual(result.Y, 0);
}
}
public partial class ContainerExtensionsTests
{
[TestMethod]
public void FillContainerMapWithItem_1x1_at_0x0_in_1x1_no_rotation()
{
var container = new int[1, 1];
var itemWidth = 1;
var itemHeight = 1;
var destinationPosX = 0;
var destinationPosY = 0;
var isRotated = false;
container.FillContainerMapWithItem(
destinationPosX,
destinationPosY,
itemWidth,
itemHeight,
isRotated
);
Assert.AreEqual(container[0, 0], 1);
}
[TestMethod]
public void FillContainerMapWithItem_1x2_at_0x0_in_1x2_no_rotation()
{
var container = new int[2, 1];
var itemWidth = 1;
var itemHeight = 2;
var destinationPosX = 0;
var destinationPosY = 0;
var isRotated = false;
container.FillContainerMapWithItem(
destinationPosX,
destinationPosY,
itemWidth,
itemHeight,
isRotated
);
Assert.AreEqual(container[0, 0], 1);
Assert.AreEqual(container[1, 0], 1);
}
[TestMethod]
public void FillContainerMapWithItem_2x2_at_0x0_in_2x2_no_rotation()
{
var container = new int[2, 2];
var itemWidth = 2;
var itemHeight = 2;
var destinationPosX = 0;
var destinationPosY = 0;
var isRotated = false;
container.FillContainerMapWithItem(
destinationPosX,
destinationPosY,
itemWidth,
itemHeight,
isRotated
);
Assert.AreEqual(container[0, 0], 1);
Assert.AreEqual(container[1, 1], 1);
}
[TestMethod]
public void FillContainerMapWithItem_1x2_at_0x0_in_2x2_with_rotation()
{
var container = new int[2, 2];
var itemWidth = 1;
var itemHeight = 2;
var destinationPosX = 0;
var destinationPosY = 0;
var isRotated = true;
container.FillContainerMapWithItem(
destinationPosX,
destinationPosY,
itemWidth,
itemHeight,
isRotated
);
Assert.AreEqual(container[0, 0], 1);
Assert.AreEqual(container[0, 1], 1);
}
[TestMethod]
public void FillContainerMapWithItem_1x2_at_1x0_in_2x2_with_rotation_with_existing_item()
{
var container = new int[2, 2];
container[0, 0] = 1;
var itemWidth = 1;
var itemHeight = 2;
var destinationPosX = 0;
var destinationPosY = 1;
var isRotated = true;
container.FillContainerMapWithItem(
destinationPosX,
destinationPosY,
itemWidth,
itemHeight,
isRotated
);
Assert.AreEqual(container[1, 0], 1);
Assert.AreEqual(container[1, 1], 1);
}
}