ExtensionsTests.cs 1.8 KB

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