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 <[email protected]> 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
