Browse Source

Converting IEnumerable to Array

#11
Sebastien Ros 11 years ago
parent
commit
c97d5887d5
2 changed files with 20 additions and 3 deletions
  1. 18 2
      Jint.Tests/Runtime/InteropTests.cs
  2. 2 1
      Jint/Native/JsValue.cs

+ 18 - 2
Jint.Tests/Runtime/InteropTests.cs

@@ -301,9 +301,25 @@ namespace Jint.Tests.Runtime
         public void ShouldConvertArrayToArrayInstance()
         {
             var result = _engine
-                .SetValue("values", new [] {1,2,3,4,5,6})
+                .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 ShouldConvertListsToArrayInstance()
+        {
+            var result = _engine
+                .SetValue("values", new List<object> { 1, 2, 3, 4, 5, 6 })
+                .Execute("values.filter(function(x){ return x % 2 == 0; })");
+
             var parts = result.ToObject();
 
             Assert.True(parts.GetType().IsArray);

+ 2 - 1
Jint/Native/JsValue.cs

@@ -1,4 +1,5 @@
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Diagnostics.Contracts;
@@ -333,7 +334,7 @@ namespace Jint.Native
                 return (JsValue) value;
             }
 
-            var array = value as System.Array;
+            var array = value as IEnumerable;
             if (array != null)
             {
                 var jsArray = engine.Array.Construct(Arguments.Empty);