c16c988fda
Intoduce test mod and restructure test suites into their own solution folder
307 lines
8.3 KiB
C#
307 lines
8.3 KiB
C#
using NUnit.Framework;
|
|
using SPTarkov.Server.Core.Extensions;
|
|
|
|
namespace UnitTests.Tests.Extensions;
|
|
|
|
[TestFixture]
|
|
public partial class ContainerExtensionsTests
|
|
{
|
|
[SetUp]
|
|
public void Initialize() { }
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
public void CanItemBePlacedInContainerAtPosition_1x2_Item_Fits_1x2_Container_At_0x0()
|
|
{
|
|
var container = new int[2, 1];
|
|
var itemStartXPos = 0;
|
|
var itemStartYPos = 0;
|
|
var itemWidth = 1;
|
|
var itemHeight = 2;
|
|
|
|
var result = container.CanItemBePlacedInContainerAtPosition(itemStartXPos, itemStartYPos, itemWidth, itemHeight);
|
|
|
|
Assert.IsTrue(result);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
public void CanItemBePlacedInContainerAtPosition_1x2_Item_Fits_2x2_Container_At_0x1()
|
|
{
|
|
var container = new int[2, 2];
|
|
var itemStartXPos = 0;
|
|
var itemStartYPos = 1;
|
|
var itemWidth = 1;
|
|
var itemHeight = 2;
|
|
|
|
var result = container.CanItemBePlacedInContainerAtPosition(itemStartXPos, itemStartYPos, itemWidth, itemHeight);
|
|
|
|
Assert.IsTrue(result);
|
|
}
|
|
}
|
|
|
|
public partial class ContainerExtensionsTests
|
|
{
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
public void FindSlotForItem_1x2_item_fits_3x3_container_rotated_with_items()
|
|
{
|
|
// |1|1|1|
|
|
// |1|0|0|
|
|
// |1|1|1|
|
|
var container = new int[3, 3];
|
|
container[0, 0] = 1;
|
|
container[0, 1] = 1;
|
|
container[0, 2] = 1;
|
|
container[1, 0] = 1;
|
|
container[2, 0] = 1;
|
|
container[2, 1] = 1;
|
|
container[2, 2] = 1;
|
|
var itemWidth = 1;
|
|
var itemHeight = 2;
|
|
|
|
var result = container.FindSlotForItem(itemWidth, itemHeight);
|
|
|
|
Assert.IsTrue(result.Success);
|
|
Assert.IsTrue(result.Rotation);
|
|
Assert.AreEqual(result.X, 1);
|
|
Assert.AreEqual(result.Y, 1);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
public void FindSlotForItem_1x2_item_fits_1x2_container_no_rotation()
|
|
{
|
|
var container = new int[2, 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, 0);
|
|
Assert.AreEqual(result.Y, 0);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
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
|
|
{
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
|
|
[Test]
|
|
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);
|
|
}
|
|
}
|