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

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit fd729b2cadc414fd566fd25487e127841802874c
Author: Josh Tynjala <[email protected]>
AuthorDate: Tue Jan 20 14:44:41 2026 -0800

    Tests for new vector emulation options to omit element types and to use a 
function for literals
---
 .../codegen/js/royale/TestRoyaleGlobalClasses.java | 123 +++++++++++++++++++--
 1 file changed, 113 insertions(+), 10 deletions(-)

diff --git 
a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleGlobalClasses.java
 
b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleGlobalClasses.java
index 954071a82..1013d4690 100644
--- 
a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleGlobalClasses.java
+++ 
b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleGlobalClasses.java
@@ -997,7 +997,7 @@ public class TestRoyaleGlobalClasses extends 
TestGlobalClasses
     }
 
     @Test
-    public void testCustomVector()
+    public void testCustomVectorWithConstructor()
     {
        project.config.setJsVectorEmulationClass(null, "CustomVector");
         IVariableNode node = getVariable("var a:Vector.<String> = new 
Vector.<String>(['Hello', 'World']);");
@@ -1007,16 +1007,58 @@ public class TestRoyaleGlobalClasses extends 
TestGlobalClasses
     }
 
     @Test
-    public void testCustomVectorLiteral_1()
+    public void testCustomVectorWithConstructorNoElementTypes()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+       project.config.setJsVectorEmulationElementTypes(null, false);
+        IVariableNode node = getVariable("var a:Vector.<String> = new 
Vector.<String>(['Hello', 'World']);");
+        asBlockWalker.visitVariable(node);
+        //MXMLC does not report an error.  Should we?
+        assertOut("var /** @type {CustomVector} */ a = new 
CustomVector(['Hello', 'World'])");
+    }
+
+    @Test
+    public void testCustomVectorLiteralEmpty()
     {
        project.config.setJsVectorEmulationClass(null, "CustomVector");
         IVariableNode node = getVariable("var a:Vector.<String> = new 
<String>[];");
         asBlockWalker.visitVariable(node);
         assertOut("var /** @type {CustomVector} */ a = new CustomVector([], 
'String')");
     }
+
+    @Test
+    public void testCustomVectorLiteralEmptyNoElementTypes()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+        project.config.setJsVectorEmulationElementTypes(null, false);
+        IVariableNode node = getVariable("var a:Vector.<String> = new 
<String>[];");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {CustomVector} */ a = new CustomVector([])");
+    }
+
+    @Test
+    public void testCustomVectorLiteralEmptyCustomLiteralFunction()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+        project.config.setJsVectorEmulationLiteralFunction(null, 
"createVectorLiteral");
+        IVariableNode node = getVariable("var a:Vector.<String> = new 
<String>[];");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {CustomVector} */ a = createVectorLiteral([], 
'String')");
+    }
+
+    @Test
+    public void 
testCustomVectorLiteralEmptyCustomLiteralFunctionNoElementTypes()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+        project.config.setJsVectorEmulationLiteralFunction(null, 
"createVectorLiteral");
+        project.config.setJsVectorEmulationElementTypes(null, false);
+        IVariableNode node = getVariable("var a:Vector.<String> = new 
<String>[];");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {CustomVector} */ a = 
createVectorLiteral([])");
+    }
     
     @Test
-    public void testCustomVectorLiteral_1a()
+    public void testCustomVectorLiteralEmptyAsArray()
     {
         project.config.setJsVectorEmulationClass(null, "Array");
         IVariableNode node = getVariable("var a:Vector.<String> = new 
<String>[];");
@@ -1025,16 +1067,47 @@ public class TestRoyaleGlobalClasses extends 
TestGlobalClasses
     }
 
     @Test
-    public void testCustomVectorLiteral_2()
+    public void testCustomVectorLiteral()
     {
        project.config.setJsVectorEmulationClass(null, "CustomVector");
         IVariableNode node = getVariable("var a:Vector.<int> = new <int>[0, 1, 
2, 3];");
         asBlockWalker.visitVariable(node);
         assertOut("var /** @type {CustomVector} */ a = new CustomVector([0, 1, 
2, 3], 'int')");
     }
+
+    @Test
+    public void testCustomVectorLiteralNoElementTypes()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+        project.config.setJsVectorEmulationElementTypes(null, false);
+        IVariableNode node = getVariable("var a:Vector.<int> = new <int>[0, 1, 
2, 3];");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {CustomVector} */ a = new CustomVector([0, 1, 
2, 3])");
+    }
+
+    @Test
+    public void testCustomVectorLiteralCustomLiteralFunction()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+       project.config.setJsVectorEmulationLiteralFunction(null, 
"createVectorLiteral");
+        IVariableNode node = getVariable("var a:Vector.<int> = new <int>[0, 1, 
2, 3];");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {CustomVector} */ a = createVectorLiteral([0, 
1, 2, 3], 'int')");
+    }
+
+    @Test
+    public void testCustomVectorLiteralCustomLiteralFunctionNoElementTypes()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+       project.config.setJsVectorEmulationLiteralFunction(null, 
"createVectorLiteral");
+        project.config.setJsVectorEmulationElementTypes(null, false);
+        IVariableNode node = getVariable("var a:Vector.<int> = new <int>[0, 1, 
2, 3];");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {CustomVector} */ a = createVectorLiteral([0, 
1, 2, 3])");
+    }
     
     @Test
-    public void testCustomVectorLiteral_2a()
+    public void testCustomVectorLiteralAsArray()
     {
         project.config.setJsVectorEmulationClass(null, "Array");
         IVariableNode node = getVariable("var a:Vector.<int> = new <int>[0, 1, 
2, 3];");
@@ -1061,7 +1134,7 @@ public class TestRoyaleGlobalClasses extends 
TestGlobalClasses
     }
     
     @Test
-    public void testCustomVectorNoArgs()
+    public void testCustomVectorConstructorNoArgs()
     {
        project.config.setJsVectorEmulationClass(null, "CustomVector");
         IVariableNode node = getVariable("var a:Vector.<String> = new 
Vector.<String>();");
@@ -1070,7 +1143,17 @@ public class TestRoyaleGlobalClasses extends 
TestGlobalClasses
     }
     
     @Test
-    public void testCustomVectorNoArgs2()
+    public void testCustomVectorConstructorNoArgsNoElementTypes()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+        project.config.setJsVectorEmulationElementTypes(null, false);
+        IVariableNode node = getVariable("var a:Vector.<String> = new 
Vector.<String>();");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {CustomVector} */ a = new CustomVector([])");
+    }
+    
+    @Test
+    public void testCustomVectorConstructorNoArgs2AsArray()
     {
         project.config.setJsVectorEmulationClass(null, "Array");
         IVariableNode node = getVariable("var a:Vector.<String> = new 
Vector.<String>();");
@@ -1106,9 +1189,19 @@ public class TestRoyaleGlobalClasses extends 
TestGlobalClasses
         asBlockWalker.visitVariable(node);
         assertOut("var /** @type {CustomVector} */ a = new CustomVector(30, 
'String')");
     }
+
+    @Test
+    public void testCustomVectorSizeArgNoElementTypes()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+        project.config.setJsVectorEmulationElementTypes(null, false);
+        IVariableNode node = getVariable("var a:Vector.<String> = new 
Vector.<String>(30);");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {CustomVector} */ a = new CustomVector(30)");
+    }
     
     @Test
-    public void testCustomVectorSizeArg2()
+    public void testCustomVectorSizeArgAsArray()
     {
         project.config.setJsVectorEmulationClass(null, "Array");
         IVariableNode node = getVariable("var a:Vector.<String> = new 
Vector.<String>(30);");
@@ -1126,7 +1219,17 @@ public class TestRoyaleGlobalClasses extends 
TestGlobalClasses
     }
     
     @Test
-    public void testCustomVectorSizeAndFixedArgs2()
+    public void testCustomVectorSizeAndFixedArgsNoElementTypes()
+    {
+       project.config.setJsVectorEmulationClass(null, "CustomVector");
+        project.config.setJsVectorEmulationElementTypes(null, false);
+        IVariableNode node = getVariable("var a:Vector.<String> = new 
Vector.<String>(30, true);");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {CustomVector} */ a = new CustomVector(30, 
true)");
+    }
+    
+    @Test
+    public void testCustomVectorSizeAndFixedArgsAsArray()
     {
         project.config.setJsVectorEmulationClass(null, "Array");
         IVariableNode node = getVariable("var a:Vector.<String> = new 
Vector.<String>(30, true);");
@@ -1193,7 +1296,7 @@ public class TestRoyaleGlobalClasses extends 
TestGlobalClasses
     }
     
     @Test
-    public void testCustomVectorClassRepresentation2()
+    public void testCustomVectorClassRepresentationAsArray()
     {
         project.config.setJsVectorEmulationClass(null, "Array");
         IVariableNode node = getVariable("var a:Class = Vector.<String>;");

Reply via email to