csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.0 KiB
119 lines
3.0 KiB
using Xunit;
|
|
using Avalonia;
|
|
using System;
|
|
|
|
namespace Avalonia.Visuals.UnitTests
|
|
{
|
|
public class VectorTests
|
|
{
|
|
[Fact]
|
|
public void Length_Should_Return_Correct_Length_Of_Vector()
|
|
{
|
|
var vector = new Vector(2, 4);
|
|
var length = Math.Sqrt(2 * 2 + 4 * 4);
|
|
|
|
Assert.Equal(length, vector.Length);
|
|
}
|
|
|
|
[Fact]
|
|
public void Length_Squared_Should_Return_Correct_Length_Of_Vector()
|
|
{
|
|
var vectorA = new Vector(2, 4);
|
|
var squaredLengthA = 2 * 2 + 4 * 4;
|
|
|
|
Assert.Equal(squaredLengthA, vectorA.SquaredLength);
|
|
}
|
|
|
|
[Fact]
|
|
public void Normalize_Should_Return_Normalized_Vector()
|
|
{
|
|
// the length of a normalized vector must be 1
|
|
|
|
var vectorA = new Vector(13, 84);
|
|
var vectorB = new Vector(-34, 345);
|
|
var vectorC = new Vector(-34, -84);
|
|
|
|
Assert.Equal(1.0, vectorA.Normalize().Length);
|
|
Assert.Equal(1.0, vectorB.Normalize().Length);
|
|
Assert.Equal(1.0, vectorC.Normalize().Length);
|
|
}
|
|
|
|
[Fact]
|
|
public void Negate_Should_Return_Negated_Vector()
|
|
{
|
|
var vector = new Vector(2, 4);
|
|
var negated = new Vector(-2, -4);
|
|
|
|
Assert.Equal(negated, vector.Negate());
|
|
}
|
|
|
|
[Fact]
|
|
public void Dot_Should_Return_Correct_Value()
|
|
{
|
|
var a = new Vector(-6, 8.0);
|
|
var b = new Vector(5, 12.0);
|
|
|
|
Assert.Equal(66.0, Vector.Dot(a, b));
|
|
}
|
|
|
|
[Fact]
|
|
public void Cross_Should_Return_Correct_Value()
|
|
{
|
|
var a = new Vector(-6, 8.0);
|
|
var b = new Vector(5, 12.0);
|
|
|
|
Assert.Equal(-112.0, Vector.Cross(a, b));
|
|
}
|
|
|
|
[Fact]
|
|
public void Divied_By_Vector_Should_Return_Correct_Value()
|
|
{
|
|
var a = new Vector(10, 2);
|
|
var b = new Vector(5, 2);
|
|
|
|
var expected = new Vector(2, 1);
|
|
|
|
Assert.Equal(expected, Vector.Divide(a, b));
|
|
}
|
|
|
|
[Fact]
|
|
public void Divied_Should_Return_Correct_Value()
|
|
{
|
|
var vector = new Vector(10, 2);
|
|
var expected = new Vector(5, 1);
|
|
|
|
Assert.Equal(expected, Vector.Divide(vector, 2));
|
|
}
|
|
|
|
[Fact]
|
|
public void Multiply_By_Vector_Should_Return_Correct_Value()
|
|
{
|
|
var a = new Vector(10, 2);
|
|
var b = new Vector(2, 2);
|
|
|
|
var expected = new Vector(20, 4);
|
|
|
|
Assert.Equal(expected, Vector.Multiply(a, b));
|
|
}
|
|
|
|
[Fact]
|
|
public void Multiply_Should_Return_Correct_Value()
|
|
{
|
|
var vector = new Vector(10, 2);
|
|
|
|
var expected = new Vector(20, 4);
|
|
|
|
Assert.Equal(expected, Vector.Multiply(vector, 2));
|
|
}
|
|
|
|
[Fact]
|
|
public void Scale_Vector_Should_Be_Commutative()
|
|
{
|
|
var vector = new Vector(10, 2);
|
|
|
|
var expected = vector * 2;
|
|
|
|
Assert.Equal(expected, 2 * vector);
|
|
}
|
|
}
|
|
}
|
|
|