- 移除了.csproj文件 - 更新了.gitignore,添加了.editorconfig - 重构了IBoard和IPiece接口,引入了新的事件处理机制 - 优化了CCBoard、CCPiece等类的实现,使用新的事件驱动模型 - 删除了冗余代码,提高了代码的可读性和可维护性
263 lines
7.6 KiB
C#
263 lines
7.6 KiB
C#
using Vector;
|
|
namespace Test.Vector;
|
|
public class TestsVector2I {
|
|
[SetUp]
|
|
public void Setup() {
|
|
}
|
|
|
|
[Test]
|
|
public void TestVector2I_Constructors() {
|
|
// Arrange & Act
|
|
var v1 = new Vector2I();
|
|
var v2 = new Vector2I(1, 2);
|
|
var v3 = new Vector2I(v2);
|
|
|
|
// Assert
|
|
Assert.Multiple(() => {
|
|
Assert.That(v1.X, Is.EqualTo(0));
|
|
Assert.That(v1.Y, Is.EqualTo(0));
|
|
Assert.That(v2.X, Is.EqualTo(1));
|
|
Assert.That(v2.Y, Is.EqualTo(2));
|
|
Assert.That(v3.X, Is.EqualTo(1));
|
|
Assert.That(v3.Y, Is.EqualTo(2));
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void TestVector2I_Operators() {
|
|
// Arrange
|
|
var v1 = new Vector2I(1, 2);
|
|
var v2 = new Vector2I(3, 4);
|
|
|
|
// Act
|
|
var v3 = v1 + v2;
|
|
var v4 = v1 - v2;
|
|
var v5 = v1 * v2;
|
|
|
|
// Assert
|
|
Assert.Multiple(() => {
|
|
Assert.That(v3, Is.EqualTo(new Vector2I(4, 6)));
|
|
Assert.That(v4, Is.EqualTo(new Vector2I(-2, -2)));
|
|
Assert.That(v5, Is.EqualTo(new Vector2I(3, 8)));
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void TestVector2I_DotProduct() {
|
|
// Arrange
|
|
var v1 = new Vector2I(1, 2);
|
|
var v2 = new Vector2I(3, 4);
|
|
|
|
// Act
|
|
var dotProduct = v1.Dot(v2);
|
|
|
|
// Assert
|
|
Assert.That(dotProduct, Is.EqualTo(11));
|
|
}
|
|
|
|
[Test]
|
|
public void TestVector2I_ParameterModification() {
|
|
// Arrange
|
|
var v1 = new Vector2I(1, 2);
|
|
var v2 = new Vector2I(3, 4);
|
|
|
|
// Act
|
|
var v3 = v1 + v2;
|
|
var v4 = v1 - v2;
|
|
var v5 = v1 * v2;
|
|
|
|
// Assert
|
|
Assert.Multiple(() => {
|
|
Assert.That(v1, Is.EqualTo(new Vector2I(1, 2)), "v1 should not be modified");
|
|
Assert.That(v2, Is.EqualTo(new Vector2I(3, 4)), "v2 should not be modified");
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void TestVector2I_Equality() {
|
|
// Arrange
|
|
var v1 = new Vector2I(1, 2);
|
|
var v2 = new Vector2I(1, 2);
|
|
var v3 = new Vector2I(3, 4);
|
|
|
|
// Act & Assert
|
|
Assert.Multiple(() => {
|
|
Assert.That(v1, Is.EqualTo(v2));
|
|
Assert.That(v1, Is.Not.EqualTo(v3));
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void TestVector2I_HashCode() {
|
|
// Arrange
|
|
var v1 = new Vector2I(1, 2);
|
|
var v2 = new Vector2I(1, 2);
|
|
var v3 = new Vector2I(3, 4);
|
|
|
|
// Act & Assert
|
|
Assert.Multiple(() => {
|
|
Assert.That(v1.GetHashCode(), Is.EqualTo(v2.GetHashCode()));
|
|
Assert.That(v1.GetHashCode(), Is.Not.EqualTo(v3.GetHashCode()));
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void TestVector2I_BoundaryValues() {
|
|
// Arrange
|
|
var v1 = new Vector2I(0, 0);
|
|
var v2 = new Vector2I(-1, -2);
|
|
var v3 = new Vector2I(int.MaxValue, int.MaxValue);
|
|
var v4 = new Vector2I(int.MinValue, int.MinValue);
|
|
|
|
// Act
|
|
var v5 = v1 + v2;
|
|
var v6 = v1 - v2;
|
|
var v7 = v1 * v2;
|
|
var v8 = v3 + v4;
|
|
var v9 = v3 - v4;
|
|
var v10 = v3 * v4;
|
|
|
|
// Assert
|
|
Assert.Multiple(() => {
|
|
Assert.That(v5, Is.EqualTo(new Vector2I(-1, -2)));
|
|
Assert.That(v6, Is.EqualTo(new Vector2I(1, 2)));
|
|
Assert.That(v7, Is.EqualTo(new Vector2I(0, 0)));
|
|
|
|
Assert.That(v8, Is.EqualTo(new Vector2I(-1, -1)));
|
|
// Assert.That(v9, Is.EqualTo(new Vector2I(2 * int.MaxValue - 1, 2 * int.MaxValue - 1)));
|
|
// Assert.That(v10, Is.EqualTo(new Vector2I(int.MaxValue * int.MinValue, int.MaxValue * int.MinValue)));
|
|
});
|
|
}
|
|
}
|
|
|
|
public class TestsTrans2DI {
|
|
[SetUp]
|
|
public void Setup() {
|
|
}
|
|
|
|
[Test]
|
|
public void Test1() {
|
|
Assert.Pass();
|
|
}
|
|
|
|
[Test]
|
|
public void TestVector2I_Constructors() {
|
|
// Arrange & Act
|
|
var v1 = new Vector2I();
|
|
var v2 = new Vector2I(1, 2);
|
|
var v3 = new Vector2I(v2);
|
|
|
|
// Assert
|
|
Assert.That(v1.X, Is.EqualTo(0));
|
|
Assert.That(v1.Y, Is.EqualTo(0));
|
|
Assert.That(v2.X, Is.EqualTo(1));
|
|
Assert.That(v2.Y, Is.EqualTo(2));
|
|
Assert.That(v3.X, Is.EqualTo(1));
|
|
Assert.That(v3.Y, Is.EqualTo(2));
|
|
}
|
|
|
|
[Test]
|
|
public void TestVector2I_Operators() {
|
|
// Arrange
|
|
var v1 = new Vector2I(1, 2);
|
|
var v2 = new Vector2I(3, 4);
|
|
|
|
// Act
|
|
var v3 = v1 + v2;
|
|
var v4 = v1 - v2;
|
|
var v5 = v1 * v2;
|
|
|
|
// Assert
|
|
Assert.That(v3, Is.EqualTo(new Vector2I(4, 6)));
|
|
Assert.That(v4, Is.EqualTo(new Vector2I(-2, -2)));
|
|
Assert.That(v5, Is.EqualTo(new Vector2I(3, 8)));
|
|
}
|
|
|
|
[Test]
|
|
public void TestTrans2DI_Constructors() {
|
|
// Arrange & Act
|
|
var t1 = new Trans2DI();
|
|
var t2 = new Trans2DI(new Vector2I(1, 0), new Vector2I(0, 1), new Vector2I(0, 0));
|
|
var t3 = new Trans2DI(t2);
|
|
var t4 = new Trans2DI(1, 0, 0, 1, 0, 0);
|
|
|
|
// Assert
|
|
Assert.That(t1.XAxis, Is.EqualTo(new Vector2I(1, 0)));
|
|
Assert.That(t1.YAxis, Is.EqualTo(new Vector2I(0, 1)));
|
|
Assert.That(t1.Origin, Is.EqualTo(new Vector2I(0, 0)));
|
|
|
|
Assert.That(t2.XAxis, Is.EqualTo(new Vector2I(1, 0)));
|
|
Assert.That(t2.YAxis, Is.EqualTo(new Vector2I(0, 1)));
|
|
Assert.That(t2.Origin, Is.EqualTo(new Vector2I(0, 0)));
|
|
|
|
Assert.That(t3.XAxis, Is.EqualTo(new Vector2I(1, 0)));
|
|
Assert.That(t3.YAxis, Is.EqualTo(new Vector2I(0, 1)));
|
|
Assert.That(t3.Origin, Is.EqualTo(new Vector2I(0, 0)));
|
|
|
|
Assert.That(t4.XAxis, Is.EqualTo(new Vector2I(1, 0)));
|
|
Assert.That(t4.YAxis, Is.EqualTo(new Vector2I(0, 1)));
|
|
Assert.That(t4.Origin, Is.EqualTo(new Vector2I(0, 0)));
|
|
}
|
|
|
|
[Test]
|
|
public void TestTrans2DI_Operators() {
|
|
// Arrange
|
|
var t1 = new Trans2DI(new Vector2I(1, 0), new Vector2I(0, 1), new Vector2I(1, 2));
|
|
var v1 = new Vector2I(3, 4);
|
|
|
|
// Act
|
|
var v2 = t1 * v1;
|
|
var v3 = v1 * t1;
|
|
|
|
// Assert
|
|
Assert.That(v2, Is.EqualTo(new Vector2I(4, 6)));
|
|
Assert.That(v3, Is.EqualTo(new Vector2I(2, 2)));
|
|
}
|
|
|
|
[Test]
|
|
public void TestTrans2DI_BoundaryValues() {
|
|
// Arrange
|
|
var t1 = new Trans2DI(new Vector2I(int.MaxValue, 0), new Vector2I(0, int.MaxValue), new Vector2I(0, 0));
|
|
var t2 = new Trans2DI(new Vector2I(int.MinValue, 0), new Vector2I(0, int.MinValue), new Vector2I(0, 0));
|
|
var v1 = new Vector2I(1, 1);
|
|
|
|
// Act
|
|
var v2 = t1 * v1;
|
|
var v3 = t2 * v1;
|
|
|
|
// Assert
|
|
Assert.That(v2, Is.EqualTo(new Vector2I(int.MaxValue, int.MaxValue)));
|
|
Assert.That(v3, Is.EqualTo(new Vector2I(int.MinValue, int.MinValue)));
|
|
}
|
|
|
|
[Test]
|
|
public void TestTrans2DI_SpecialValues() {
|
|
// Arrange
|
|
var t1 = new Trans2DI(new Vector2I(0, 0), new Vector2I(0, 0), new Vector2I(0, 0));
|
|
var t2 = new Trans2DI(new Vector2I(1, 0), new Vector2I(0, 1), new Vector2I(0, 0));
|
|
var v1 = new Vector2I(1, 1);
|
|
|
|
// Act
|
|
var v2 = t1 * v1;
|
|
var v3 = t2 * v1;
|
|
|
|
// Assert
|
|
Assert.That(v2, Is.EqualTo(new Vector2I(0, 0)));
|
|
Assert.That(v3, Is.EqualTo(new Vector2I(1, 1)));
|
|
}
|
|
|
|
[Test]
|
|
public void TestTrans2DI_Multiplication() {
|
|
// Arrange
|
|
var t1 = new Trans2DI(new Vector2I(1, 0), new Vector2I(0, 1), new Vector2I(1, 2));
|
|
var t2 = new Trans2DI(new Vector2I(2, 0), new Vector2I(0, 2), new Vector2I(3, 4));
|
|
|
|
// Act
|
|
var t3 = t1 * t2;
|
|
|
|
// Assert
|
|
Assert.That(t3.XAxis, Is.EqualTo(new Vector2I(2, 0)));
|
|
Assert.That(t3.YAxis, Is.EqualTo(new Vector2I(0, 2)));
|
|
Assert.That(t3.Origin, Is.EqualTo(new Vector2I(5, 8)));
|
|
}
|
|
} |