Răsfoiți Sursa

Fixing arrays to ArrayInstance conversion

Sebastien Ros 11 ani în urmă
părinte
comite
978cb8b847
2 a modificat fișierele cu 16 adăugiri și 1 ștergeri
  1. 15 0
      Jint.Tests/Runtime/InteropTests.cs
  2. 1 1
      Jint/Native/JsValue.cs

+ 15 - 0
Jint.Tests/Runtime/InteropTests.cs

@@ -297,6 +297,21 @@ namespace Jint.Tests.Runtime
             ");
         }
 
+        [Fact]
+        public void ShouldConvertArrayToArrayInstance()
+        {
+            var result = _engine
+                .SetValue("values", new [] {1,2,3,4,5,6})
+                .Execute("values.filter(function(x){ return x % 2 == 0; })");
+            
+            var parts = result.ToObject();
+
+            Assert.True(parts.GetType().IsArray);
+            Assert.Equal(3, ((object[])parts).Length);
+            Assert.Equal(2d, ((object[])parts)[0]);
+            Assert.Equal(4d, ((object[])parts)[1]);
+            Assert.Equal(6d, ((object[])parts)[2]);
+        }
 
         [Fact]
         public void ShouldConvertArrayInstanceToArray()

+ 1 - 1
Jint/Native/JsValue.cs

@@ -333,7 +333,7 @@ namespace Jint.Native
             var array = value as System.Array;
             if (array != null)
             {
-                var jsArray = new ArrayInstance(engine);
+                var jsArray = engine.Array.Construct(Arguments.Empty);
                 foreach (var item in array)
                 {
                     var jsItem = FromObject(engine, item);