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