TypedArrayInteropTests.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using Xunit;
  2. namespace Jint.Tests.Runtime
  3. {
  4. public class TypedArrayInteropTests
  5. {
  6. [Fact]
  7. public void CanInteropWithInt8()
  8. {
  9. var engine = new Engine();
  10. engine.SetValue("testSubject", engine.Realm.Intrinsics.Int8Array.Construct(new sbyte[] { 42 }));
  11. ValidateCreatedTypeArray(engine, "Int8Array");
  12. }
  13. [Fact]
  14. public void CanInteropWithUint8()
  15. {
  16. var engine = new Engine();
  17. engine.SetValue("testSubject", engine.Realm.Intrinsics.Uint8Array.Construct(new byte[] { 42 }));
  18. ValidateCreatedTypeArray(engine, "Uint8Array");
  19. }
  20. [Fact]
  21. public void CanInteropWithUint8Clamped()
  22. {
  23. var engine = new Engine();
  24. engine.SetValue("testSubject", engine.Realm.Intrinsics.Uint8ClampedArray.Construct(new byte[] { 42 }));
  25. ValidateCreatedTypeArray(engine, "Uint8ClampedArray");
  26. }
  27. [Fact]
  28. public void CanInteropWithInt16()
  29. {
  30. var engine = new Engine();
  31. engine.SetValue("testSubject", engine.Realm.Intrinsics.Int16Array.Construct(new short[] { 42 }));
  32. ValidateCreatedTypeArray(engine, "Int16Array");
  33. }
  34. [Fact]
  35. public void CanInteropWithUint16()
  36. {
  37. var engine = new Engine();
  38. engine.SetValue("testSubject", engine.Realm.Intrinsics.Uint16Array.Construct(new ushort[] { 42 }));
  39. ValidateCreatedTypeArray(engine, "Uint16Array");
  40. }
  41. [Fact]
  42. public void CanInteropWithInt32()
  43. {
  44. var engine = new Engine();
  45. engine.SetValue("testSubject", engine.Realm.Intrinsics.Int32Array.Construct(new int[] { 42 }));
  46. ValidateCreatedTypeArray(engine, "Int32Array");
  47. }
  48. [Fact]
  49. public void CanInteropWithUint32()
  50. {
  51. var engine = new Engine();
  52. engine.SetValue("testSubject", engine.Realm.Intrinsics.Uint32Array.Construct(new uint[] { 42 }));
  53. ValidateCreatedTypeArray(engine, "Uint32Array");
  54. }
  55. [Fact(Skip = "BigInt not implemented")]
  56. public void CanInteropWithBigInt64()
  57. {
  58. var engine = new Engine();
  59. engine.SetValue("testSubject", engine.Realm.Intrinsics.BigInt64Array.Construct(new long[] { 42 }));
  60. ValidateCreatedTypeArray(engine, "BigInt64Array");
  61. }
  62. [Fact(Skip = "BigInt not implemented")]
  63. public void CanInteropWithBigUint64()
  64. {
  65. var engine = new Engine();
  66. engine.SetValue("testSubject", engine.Realm.Intrinsics.BigUint64Array.Construct(new ulong[] { 42 }));
  67. ValidateCreatedTypeArray(engine, "BigUint64Array");
  68. }
  69. private static void ValidateCreatedTypeArray(Engine engine, string arrayName)
  70. {
  71. Assert.Equal(arrayName, engine.Evaluate("testSubject.constructor.name").AsString());
  72. Assert.Equal(1, engine.Evaluate("testSubject.length").AsNumber());
  73. Assert.Equal(42, engine.Evaluate("testSubject[0]").AsNumber());
  74. }
  75. }
  76. }