MemoryArrayTests.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Numerics;
  5. using System.Text;
  6. using NUnit.Framework;
  7. namespace SharpGLTF.Memory
  8. {
  9. [TestFixture]
  10. public class MemoryArrayTests
  11. {
  12. [Test]
  13. public void TestFloatingArray()
  14. {
  15. Assert.AreEqual(17, _CreateFloatingAccessor(new Byte[] { 17 }, Schema2.EncodingType.UNSIGNED_BYTE, false)[0]);
  16. Assert.AreEqual(17, _CreateFloatingAccessor(new Byte[] { 17, 0 }, Schema2.EncodingType.UNSIGNED_SHORT, false)[0]);
  17. Assert.AreEqual(17, _CreateFloatingAccessor(new Byte[] { 17 }, Schema2.EncodingType.BYTE, false)[0]);
  18. Assert.AreEqual(17, _CreateFloatingAccessor(new Byte[] { 17, 0 }, Schema2.EncodingType.SHORT, false)[0]);
  19. Assert.AreEqual(1, _CreateFloatingAccessor(new Byte[] { 255 }, Schema2.EncodingType.UNSIGNED_BYTE, true)[0]);
  20. Assert.AreEqual(1, _CreateFloatingAccessor(new Byte[] { 127 }, Schema2.EncodingType.BYTE, true)[0]);
  21. Assert.AreEqual(-1, _CreateFloatingAccessor(new Byte[] { 128 }, Schema2.EncodingType.BYTE, true)[0]);
  22. Assert.AreEqual(1, _CreateFloatingAccessor(new Byte[] { 255, 255 }, Schema2.EncodingType.UNSIGNED_SHORT, true)[0]);
  23. Assert.AreEqual(1, _CreateFloatingAccessor(new Byte[] { 255, 127 }, Schema2.EncodingType.SHORT, true)[0]);
  24. Assert.AreEqual(-1, _CreateFloatingAccessor(new Byte[] { 0, 128 }, Schema2.EncodingType.SHORT, true)[0]);
  25. Assert.AreEqual(17, _CreateFloatingAccessor(new Byte[] { 17, 0, 0, 0 }, Schema2.EncodingType.UNSIGNED_INT, false)[0]);
  26. Assert.AreEqual(1, _CreateFloatingAccessor(new Byte[] { 0,0, 0x80, 0x3f }, Schema2.EncodingType.FLOAT, false)[0]);
  27. }
  28. private static FloatingAccessor _CreateFloatingAccessor(byte[] data, Schema2.EncodingType encoding, bool normalized)
  29. {
  30. return new FloatingAccessor(new ArraySegment<byte>(data), 0, int.MaxValue, 0, 1, encoding, normalized);
  31. }
  32. [Test]
  33. public void TestLinq()
  34. {
  35. var buffer = new Byte[] { 1, 52, 43, 6, 23, 234 };
  36. var accessor = new Vector2Array(buffer, 0, Schema2.EncodingType.BYTE, true);
  37. var result = accessor.ToArray();
  38. Assert.AreEqual(3, result.Length);
  39. }
  40. [Test]
  41. public void FillEncoded1()
  42. {
  43. var v1 = new Vector4(0.1f, 0.2f, 0.6f, 0.8f);
  44. var v2 = new Vector4(1, 2, 3, 4);
  45. var bytes = new Byte[256];
  46. var v4n = new Vector4Array(bytes.Slice(0), 0, Schema2.EncodingType.UNSIGNED_BYTE, true);
  47. v4n[1] = v1;
  48. VectorAssert.AreEqual(v4n[1], v1, 0.1f);
  49. var v4u = new Vector4Array(bytes.Slice(0), 0, Schema2.EncodingType.UNSIGNED_BYTE, false);
  50. v4u[1] = v2;
  51. VectorAssert.AreEqual(v4u[1], v2);
  52. }
  53. [Test]
  54. public void FillEncoded2()
  55. {
  56. var v1 = new Vector4(0.1f, 0.2f, 0.6f, 0.8f);
  57. var v2 = new Vector4(1, 2, 3, 4);
  58. var bytes = new Byte[256];
  59. var v4n = new Vector4Array(bytes.Slice(0), 0, 5, 8, Schema2.EncodingType.UNSIGNED_BYTE, true);
  60. var v4u = new Vector4Array(bytes.Slice(0), 4, 5, 8, Schema2.EncodingType.UNSIGNED_BYTE, false);
  61. v4n[1] = v1;
  62. VectorAssert.AreEqual(v4n[1], v1, 0.1f);
  63. v4u[1] = v2;
  64. VectorAssert.AreEqual(v4u[1], v2);
  65. }
  66. }
  67. }