You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2019/05/19 06:47:16 UTC

[royale-asjs] 04/05: Added conforming slice method to Vector.

This is an automated email from the ASF dual-hosted git repository.

gregdove pushed a commit to branch improvements/Language
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit cc5612e028b81899710e989f36386aac51be03b6
Author: greg-dove <gr...@gmail.com>
AuthorDate: Sun May 19 18:03:49 2019 +1200

    Added conforming slice method to Vector.
---
 .../royale/org/apache/royale/utils/Language.as     | 13 ++++++++++
 .../language/LanguageTesterTestVector.as           | 30 ++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as b/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
index c926fef..8f2a7f2 100644
--- a/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
+++ b/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
@@ -577,6 +577,7 @@ package org.apache.royale.utils
                     'toString': { value:baseVectorOverrides.toString },
                     'map': { value:baseVectorOverrides.map },
                     'splice': { value:baseVectorOverrides.splice },
+                    'slice': { value:baseVectorOverrides.slice },
                     'concat': { value:baseVectorOverrides.concat },
                     'filter': { value:baseVectorOverrides.filter },
                     'insertAt': { value:baseVectorOverrides.uncheckedInsertAt },
@@ -768,6 +769,9 @@ class VectorSupport {
             'splice': {
                 value: inst.splice
             },
+            'slice': {
+                value: inst.slice
+            },
             'concat': {
                 value: inst.concat
             },
@@ -843,6 +847,7 @@ class VectorSupport {
         _baseObject.toString = _instance['toString'];
         _baseObject.map = _instance['map'];
         _baseObject.splice = _instance['splice'];
+        _baseObject.slice = _instance['slice'];
         _baseObject.concat = _instance['concat'];
         _baseObject.filter = _instance['filter'];
         _baseObject.uncheckedInsertAt = _instance['uncheckedInsertAt'];
@@ -894,6 +899,14 @@ class VectorSupport {
     public function splice():* {
         var a:Array = Array.prototype.slice.call(arguments) as Array;var inst:Object= this[Language.SYNTH_TAG_FIELD]; var ret:Array = Array.prototype.splice.apply(this, a) as Array; if (inst[FIXED_LEN] > -1) inst[FIXED_LEN] = this['length']; return arrayVector(ret, ret.length, inst[ELEMENT_TYPE], false, null, false);
     }
+    
+    /**
+     * @royaleignorecoercion Array
+     */
+    public function slice():* {
+        var a:Array = Array.prototype.slice.call(arguments) as Array;var inst:Object= this[Language.SYNTH_TAG_FIELD]; var ret:Array = Array.prototype.slice.apply(this, a) as Array; return tagVectorArray(ret, inst[ELEMENT_TYPE], false, null)//arrayVector(ret, ret.length, inst[ELEMENT_TYPE], false, null, false);
+    }
+    
     /**
      * @royaleignorecoercion Array
      */
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestVector.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestVector.as
index 0e7652e..19af141 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestVector.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestVector.as
@@ -519,6 +519,36 @@ package flexUnitTests.language
             Assert.assertTrue('Unexpected Vector check', testConcat is Vector.<String>);
             
         }
+    
+    
+        [Test]
+        public function testVectorSlice():void
+        {
+            var source:Array = [1, '', false, NaN, {test: true}, undefined];
+            var vi1:Vector.<int> = new <int>[1, 2, 3, 4, 5];
+            var vi2:Vector.<int> = vi1.slice();
+            Assert.assertEquals('Unexpected Vector check', '1,2,3,4,5', vi2.toString());
+            Assert.assertTrue('Unexpected Vector check', vi2 is Vector.<int>);
+            vi2 = vi1.slice(1);
+            Assert.assertEquals('Unexpected Vector check', '2,3,4,5', vi2.toString());
+            Assert.assertTrue('Unexpected Vector check', vi2 is Vector.<int>);
+    
+            vi2 = vi1.slice(0,0);
+            Assert.assertEquals('Unexpected Vector check', '', vi2.toString());
+            Assert.assertTrue('Unexpected Vector check', vi2 is Vector.<int>);
+    
+            vi2 = vi1.slice(1,-1);
+            Assert.assertEquals('Unexpected Vector check', '2,3,4', vi2.toString());
+            Assert.assertTrue('Unexpected Vector check', vi2 is Vector.<int>);
+        
+            var vs:Vector.<String> = Vector.<String>(source);
+            var testSlice:Vector.<String> = vs.slice();
+            Assert.assertEquals('Unexpected Vector check', '1,,false,NaN,[object Object],null', testSlice.toString());
+            Assert.assertTrue('Unexpected Vector check', testSlice is Vector.<String>);
+        
+        }
+        
+        
         
         [Test]
         public function testVectorFilter():void