ArrayTests.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using Jint.Native.Array;
  3. using Xunit;
  4. namespace Jint.Tests.Runtime
  5. {
  6. public class ArrayTests
  7. {
  8. private readonly Engine _engine;
  9. public ArrayTests()
  10. {
  11. _engine = new Engine()
  12. .SetValue("log", new Action<object>(Console.WriteLine))
  13. .SetValue("assert", new Action<bool>(Assert.True))
  14. .SetValue("equal", new Action<object, object>(Assert.Equal));
  15. }
  16. private void RunTest(string source)
  17. {
  18. _engine.Execute(source);
  19. }
  20. [Fact]
  21. public void ArrayPrototypeToStringWithArray()
  22. {
  23. var result = _engine.Execute("Array.prototype.toString.call([1,2,3]);").GetCompletionValue().AsString();
  24. Assert.Equal("1,2,3", result);
  25. }
  26. [Fact]
  27. public void ArrayPrototypeToStringWithNumber()
  28. {
  29. var result = _engine.Execute("Array.prototype.toString.call(1);").GetCompletionValue().AsString();
  30. Assert.Equal("[object Number]", result);
  31. }
  32. [Fact]
  33. public void ArrayPrototypeToStringWithObject()
  34. {
  35. var result = _engine.Execute("Array.prototype.toString.call({});").GetCompletionValue().AsString();
  36. Assert.Equal("[object Object]", result);
  37. }
  38. [Fact]
  39. public void EmptyStringKey()
  40. {
  41. var result = _engine.Execute("var x=[];x[\"\"]=8;x[\"\"];").GetCompletionValue().AsNumber();
  42. Assert.Equal(8, result);
  43. }
  44. [Fact]
  45. public void LargeArraySize()
  46. {
  47. const string code = @"
  48. let arr = [];
  49. for (let i = 0; i < 10000; i++) arr.push(i);
  50. for (let i=0;i<10000;i++) arr.splice(0, 1);
  51. ";
  52. var engine = new Engine();
  53. engine.Execute(code);
  54. }
  55. [Fact]
  56. public void ArrayLengthFromInitialState()
  57. {
  58. var engine = new Engine();
  59. var array = new ArrayInstance(engine, 0);
  60. var length = (int) array.Length;
  61. Assert.Equal(0, length);
  62. }
  63. }
  64. }