InternalExtensionsTests.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Numerics;
  5. using NUnit.Framework;
  6. namespace SharpGLTF
  7. {
  8. using System.Numerics;
  9. using Schema2;
  10. [TestFixture]
  11. [Category("Core")]
  12. public class InternalExtensionsTests
  13. {
  14. internal static int _WordPadded(int length)
  15. {
  16. var padding = (length & 3);
  17. return length + (padding == 0 ? 0 : 4 - padding);
  18. }
  19. [Test]
  20. public void TestPadding()
  21. {
  22. Assert.That(_WordPadded(1), Is.EqualTo(4));
  23. Assert.That(_WordPadded(2), Is.EqualTo(4));
  24. Assert.That(_WordPadded(3), Is.EqualTo(4));
  25. Assert.That(_WordPadded(4), Is.EqualTo(4));
  26. Assert.That(_WordPadded(5), Is.EqualTo(8));
  27. }
  28. [Test]
  29. public void TestAsNullableExtensions()
  30. {
  31. // the AsNullable extensions are a bit tricky;
  32. // they should default to null regardless of the value being inside or outside the bounds of min-max
  33. // but if after the min.max has affected the value, the default-to-null check still applies.
  34. Assert.That(5.AsNullable(5), Is.EqualTo(null));
  35. Assert.That(0.AsNullable(3, 1, 5), Is.EqualTo(1));
  36. Assert.That(1.AsNullable(3, 1, 5), Is.EqualTo(1));
  37. Assert.That(2.AsNullable(3, 1, 5), Is.EqualTo(2));
  38. Assert.That(3.AsNullable(3, 1, 5), Is.EqualTo(null));
  39. Assert.That(4.AsNullable(3, 1, 5), Is.EqualTo(4));
  40. Assert.That(5.AsNullable(3, 1, 5), Is.EqualTo(5));
  41. Assert.That(6.AsNullable(3, 1, 5), Is.EqualTo(5));
  42. // vectors
  43. Assert.That(Vector2.Zero.AsNullable(Vector2.One, Vector2.One, Vector2.One * 2), Is.EqualTo(null));
  44. Assert.That(new Vector2(3).AsNullable(Vector2.One, Vector2.One, Vector2.One * 2), Is.EqualTo(new Vector2(2)));
  45. Assert.That(Vector3.Zero.AsNullable(Vector3.One, Vector3.One, Vector3.One * 2), Is.EqualTo(null));
  46. Assert.That(new Vector3(3).AsNullable(Vector3.One, Vector3.One, Vector3.One * 2), Is.EqualTo(new Vector3(2)));
  47. Assert.That(Vector4.Zero.AsNullable(Vector4.One, Vector4.One, Vector4.One * 2), Is.EqualTo(null));
  48. Assert.That(new Vector4(3).AsNullable(Vector4.One, Vector4.One, Vector4.One * 2), Is.EqualTo(new Vector4(2)));
  49. // special case: default values outside the min-max range should also return null
  50. Assert.That(0.AsNullable( 0, 1, 5), Is.EqualTo(null));
  51. Assert.That(10.AsNullable(10, 1, 5), Is.EqualTo(null));
  52. Assert.That(Vector2.Zero.AsNullable(Vector2.Zero, Vector2.One, Vector2.One * 5), Is.EqualTo(null));
  53. Assert.That(Vector3.Zero.AsNullable(Vector3.Zero, Vector3.One, Vector3.One * 5), Is.EqualTo(null));
  54. Assert.That(Vector4.Zero.AsNullable(Vector4.Zero, Vector4.One, Vector4.One * 5), Is.EqualTo(null));
  55. }
  56. }
  57. }