Vector2ExtensionsTests.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using Microsoft.Xna.Framework;
  2. using Xunit;
  3. namespace MonoGame.Extended.Tests
  4. {
  5. public class Vector2ExtensionsTests
  6. {
  7. [Fact]
  8. public void Vector2_EqualsWithTolerence_Test()
  9. {
  10. var a = new Vector2(1f, 1f);
  11. var b = new Vector2(1.0000001f, 1.0000001f);
  12. Assert.False(a.Equals(b));
  13. Assert.True(a.EqualsWithTolerence(b));
  14. }
  15. [Fact]
  16. public void Vector2_NormalizedCopy_Test()
  17. {
  18. var a = new Vector2(5, -10);
  19. var b = a.NormalizedCopy();
  20. Assert.True(new Vector2(0.4472136f, -0.8944272f).EqualsWithTolerence(b));
  21. }
  22. [Fact]
  23. public void Vector2_Perpendicular_Test()
  24. {
  25. // http://mathworld.wolfram.com/PerpendicularVector.html
  26. var a = new Vector2(5, -10);
  27. var b = a.PerpendicularClockwise();
  28. var c = a.PerpendicularCounterClockwise();
  29. Assert.Equal(new Vector2(-10, -5), b);
  30. Assert.Equal(new Vector2(10, 5), c);
  31. }
  32. #if FNA || KNI
  33. [Fact]
  34. public void Vector2_Rotate_90_Degrees_Test()
  35. {
  36. var a = new Vector2(0, -10);
  37. var b = a.Rotate(MathHelper.ToRadians(90));
  38. Assert.True(new Vector2(10, 0).EqualsWithTolerence(b));
  39. }
  40. [Fact]
  41. public void Vector2_Rotate_360_Degrees_Test()
  42. {
  43. var a = new Vector2(0, 10);
  44. var b = a.Rotate(MathHelper.ToRadians(360));
  45. Assert.True(new Vector2(0, 10).EqualsWithTolerence(b));
  46. }
  47. [Fact]
  48. public void Vector2_Rotate_45_Degrees_Test()
  49. {
  50. var a = new Vector2(0, -10);
  51. var b = a.Rotate(MathHelper.ToRadians(45));
  52. Assert.True(new Vector2(7.071068f, -7.071068f).EqualsWithTolerence(b));
  53. }
  54. #endif
  55. [Fact]
  56. public void Vector2_Truncate_Test()
  57. {
  58. var a = new Vector2(10, 10);
  59. var b = a.Truncate(5);
  60. Assert.Equal(5f, b.Length(), 3);
  61. }
  62. [Fact]
  63. public void Vector2_IsNaN_Test()
  64. {
  65. var a = new Vector2(float.NaN, 10);
  66. var b = new Vector2(10, float.NaN);
  67. var c = new Vector2(float.NaN, float.NaN);
  68. var d = new Vector2(10, 10);
  69. Assert.True(a.IsNaN());
  70. Assert.True(b.IsNaN());
  71. Assert.True(c.IsNaN());
  72. Assert.False(d.IsNaN());
  73. }
  74. [Fact]
  75. public void Vector2_ToAngle_Test()
  76. {
  77. var a = new Vector2(0, -10);
  78. var b = new Vector2(10, 0);
  79. #if FNA || KNI
  80. var c = -Vector2.UnitY.Rotate(MathHelper.ToRadians(45));
  81. #else
  82. var c = -Vector2.UnitY;
  83. c.Rotate(MathHelper.ToRadians(45));
  84. #endif
  85. Assert.Equal(MathHelper.ToRadians(0), a.ToAngle());
  86. Assert.Equal(MathHelper.ToRadians(90), b.ToAngle());
  87. Assert.Equal(MathHelper.ToRadians(45), c.ToAngle());
  88. }
  89. }
  90. }