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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 9ab218a  Small tweaks in XML/XMLList. Many new tests added (requires 
recent compiler updates to pass)
9ab218a is described below

commit 9ab218afeb1f0c55e63c8da71286031b27d0c532
Author: greg-dove <greg.d...@gmail.com>
AuthorDate: Mon Jan 24 14:33:51 2022 +1300

    Small tweaks in XML/XMLList. Many new tests added (requires recent compiler 
updates to pass)
---
 frameworks/projects/XML/src/main/royale/XML.as     |   2 +-
 frameworks/projects/XML/src/main/royale/XMLList.as |  20 ++-
 .../flexUnitTests/xml/XMLListTesterGeneralTest.as  |  77 +++++++++++-
 .../test/royale/flexUnitTests/xml/XMLQNameTest.as  |   3 +
 .../flexUnitTests/xml/XMLTesterGeneralTest.as      | 137 +++++++++++++++++++++
 5 files changed, 233 insertions(+), 6 deletions(-)

diff --git a/frameworks/projects/XML/src/main/royale/XML.as 
b/frameworks/projects/XML/src/main/royale/XML.as
index dc636bf..a2ed9bf 100644
--- a/frameworks/projects/XML/src/main/royale/XML.as
+++ b/frameworks/projects/XML/src/main/royale/XML.as
@@ -1455,7 +1455,7 @@ package
                        var i:int;
                        if (xml == this) return true;
                        
-                       if(!(xml is XML))
+                       if(!(xml instanceof XML))
                                return false;
                        var typedXML:XML = xml as XML;
                        if(typedXML.getNodeRef() != getNodeRef())
diff --git a/frameworks/projects/XML/src/main/royale/XMLList.as 
b/frameworks/projects/XML/src/main/royale/XMLList.as
index 305492c..937c4d8 100644
--- a/frameworks/projects/XML/src/main/royale/XMLList.as
+++ b/frameworks/projects/XML/src/main/royale/XMLList.as
@@ -583,10 +583,28 @@ package
                        return retVal;
                }
 
+               /**
+                *
+                * @param list
+                * @return
+                *
+                * @royaleignorecoercion XMLList
+                * @royaleignorecoercion XML
+                */
                public function equals(list:*):Boolean
                {
+                       if (list === undefined && _xmlArray.length == 0) return 
true;
+                       if (list instanceof XMLList) {
+                               var l:uint = _xmlArray.length;
+                               if ((list as XMLList)._xmlArray.length != l) 
return false;
+
+                               for (var i:uint=0;i<l;i++) {
+                                       if (!((_xmlArray[i] as 
XML).equals((list as XMLList)._xmlArray[i] as XML))) return false;
+                               }
+                               return true;
+                       }
                        if(isSingle())
-                               return _xmlArray[0].equals(list);
+                               return (_xmlArray[0] as XML).equals(list);
                        /*
                                Overview
                                The XMLList type adds the internal [[Equals]] 
method to the internal properties defined by the Object type.
diff --git 
a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLListTesterGeneralTest.as
 
b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLListTesterGeneralTest.as
index bdeebfd..87966da 100644
--- 
a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLListTesterGeneralTest.as
+++ 
b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLListTesterGeneralTest.as
@@ -306,8 +306,8 @@ package flexUnitTests.xml
 
             var combined:XMLList = childList+itemIds;
 
-            assertEquals(combined.toString(),
-                    '<child name="1">\n' +
+            //IE11 can have attribute order inverted
+            var firstPartA:String ='<child name="1">\n' +
                     '  <item id="item1" category="unknown"/>\n' +
                     '</child>\n' +
                     '<child name="2">\n' +
@@ -318,11 +318,80 @@ package flexUnitTests.xml
                     '</child>\n' +
                     '<child name="4">\n' +
                     '  <item id="item4" category="unknown"/>\n' +
+                    '</child>\n'
+            var firstPartB:String ='<child name="1">\n' +
+                    '  <item category="unknown" id="item1"/>\n' +
                     '</child>\n' +
-                    'item1\n' +
+                    '<child name="2">\n' +
+                    '  <item category="unknown" id="item2"/>\n' +
+                    '</child>\n' +
+                    '<child name="3">\n' +
+                    '  <item category="unknown" id="item3"/>\n' +
+                    '</child>\n' +
+                    '<child name="4">\n' +
+                    '  <item category="unknown" id="item4"/>\n' +
+                    '</child>\n';
+
+            var lastPart:String = 'item1\n' +
                     'item2\n' +
                     'item3\n' +
-                    'item4', 'unexpected list concatenation result');
+                    'item4';
+
+            var combinedString:String = combined.toString();
+            var mustBeExpected:Boolean = combinedString == (firstPartA + 
lastPart) || combinedString == (firstPartB + lastPart);
+
+            assertTrue(mustBeExpected, 'unexpected list concatenation result');
+
+            var test:Object = <xml>test</xml>;
+            var xmlInst:XML = <xml><child selected="false"/><child 
selected="true"/></xml>;
+
+            var check:XMLList = XMLList(test) + 
xmlInst.descendants().(@selected == 'true');
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    '<child selected="true"/>', 'unexpected XMLList addition 
result');
+
+            check = XMLList(test) + xmlInst.descendants().@selected;
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    'false\n' +'true', 'unexpected XMLList addition result');
+
+            check = XMLList(test) + xmlInst.child;
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    '<child selected="false"/>\n' +'<child selected="true"/>', 
'unexpected XMLList addition result');
+
+
+            check = XMLList(test) + xmlInst.child[0];
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    '<child selected="false"/>' , 'unexpected XMLList addition 
result');
+
+            check = XMLList(test) + xmlInst.child.@['selected'];
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    'false\n' +'true' , 'unexpected XMLList addition result');
+
+            check = XMLList(test) + xmlInst['child'];
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    '<child selected="false"/>\n' +'<child selected="true"/>', 
'unexpected XMLList addition result');
+
+            check = getList() + xmlInst['child'];
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    '<child selected="false"/>\n' +'<child selected="true"/>', 
'unexpected XMLList addition result');
+
+
+            check = getList() + xmlInst['child'] + getList();
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    '<child selected="false"/>\n' +'<child 
selected="true"/>\n' + '<xml>test</xml>', 'unexpected XMLList addition result');
+
+            check = (getList() + xmlInst['child']) + getList();
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    '<child selected="false"/>\n' +'<child 
selected="true"/>\n' + '<xml>test</xml>', 'unexpected XMLList addition result');
+
+            check = getList() + (xmlInst['child'] + getList());
+            assertEquals(check.toString(), '<xml>test</xml>\n' +
+                    '<child selected="false"/>\n' +'<child 
selected="true"/>\n' + '<xml>test</xml>', 'unexpected XMLList addition result');
+
+        }
+
+        private function getList():XMLList{
+            var test:Object = <xml>test</xml>;
+            return  XMLList(test);
         }
     }
 }
diff --git 
a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLQNameTest.as 
b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLQNameTest.as
index 5965a4f..f5f0691 100644
--- a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLQNameTest.as
+++ b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLQNameTest.as
@@ -131,6 +131,9 @@ package flexUnitTests.xml
         [Test]
         public function testEquality():void{
             assertTrue(new QName('test') == new QName('test'), 'unexpected 
equality result');
+            assertFalse(new QName('test') == new QName('test2'), 'unexpected 
inequality result');
+            assertFalse(new QName('test') != new QName('test'), 'unexpected 
inequality result');
+            assertTrue(new QName('test') != new QName('test2'), 'unexpected 
inequality result');
             assertFalse(new QName('test') === new QName('test'), 'unexpected 
strict equality result');
         }
     
diff --git 
a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
 
b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
index 39b0b7d..7f4ce1e 100644
--- 
a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
+++ 
b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
@@ -1444,5 +1444,142 @@ package flexUnitTests.xml
             var obj:Object = xml + num;
             assertStrictlyEquals(obj,"19",'unexpected untyped addition 
result');
         }
+
+        [Test]
+        public function testEquality():void{
+            var xmlInst:XML = <xml><child selected="false"/><child 
selected="true"/></xml>;
+
+            var list:XMLList = xmlInst.child;
+
+            var check:Boolean;
+
+            var trueVal:Boolean = true;
+            var falseVal:Boolean = false;
+
+            check = list[0].@selected == false;
+
+            assertTrue(check, 'unexpected boolean equality (non-strict)');
+
+            check = list[0].@selected != false;
+
+            assertFalse(check, 'unexpected boolean equality (non-strict)');
+
+            check = list[0].@selected == falseVal;
+
+            assertTrue(check, 'unexpected boolean equality (non-strict)');
+
+            check = list[0].@selected != falseVal;
+
+            assertFalse(check, 'unexpected boolean equality (non-strict)');
+
+
+            check = list[0].@selected === false
+
+            assertFalse(check, 'unexpected boolean inequality (strict)');
+
+            check = list[0].@selected !== false
+
+            assertTrue(check, 'unexpected boolean inequality (strict)');
+
+
+            check = list[0].@selected === falseVal
+
+            assertFalse(check, 'unexpected boolean inequality (strict)');
+
+            check = list[0].@selected !== falseVal
+
+            assertTrue(check, 'unexpected boolean inequality (strict)');
+
+            check = list[1].@selected == true;
+
+            assertTrue(check, 'unexpected boolean equality (non-strict)');
+
+            check = list[1].@selected != true;
+
+            assertFalse(check, 'unexpected boolean equality (non-strict)');
+
+            check = list[1].@selected == trueVal;
+
+            assertTrue(check, 'unexpected boolean equality (non-strict)');
+
+            check = list[1].@selected != trueVal;
+
+            assertFalse(check, 'unexpected boolean equality (non-strict)');
+
+            check = list[1].@selected === true;
+            assertFalse(check, 'unexpected boolean inequality (strict)');
+
+            check = list[1].@selected !== true;
+            assertTrue(check, 'unexpected boolean inequality (strict)');
+
+            check = list[1].@selected === trueVal;
+            assertFalse(check, 'unexpected boolean inequality (strict)');
+
+            check = list[1].@selected !== trueVal;
+            assertTrue(check, 'unexpected boolean inequality (strict)');
+
+            //do one check opposite, and assume all the rest will pass the 
same:
+            check =  false == list[0].@selected ;
+            assertTrue(check, 'unexpected boolean equality (non-strict)');
+
+            //check XML as oppossed to XMLList
+            var boolTest:XML = list[1].@selected[0];
+
+            check = boolTest == true;
+            assertTrue(check, 'unexpected boolean equality (non-strict)');
+
+            boolTest = list[0].@selected[0];
+            check = boolTest == false;
+            assertTrue(check, 'unexpected boolean inequality (non-strict)');
+
+            boolTest  = new XML('true');
+            check = boolTest == true;
+            assertTrue(check, 'unexpected boolean equality (non-strict)');
+
+            boolTest  = new XML('false');
+            check = boolTest == false;
+            assertTrue(check, 'unexpected boolean equality (non-strict)');
+
+
+
+            var valZero:uint = 0;
+            var valNum:Number = 5.25;
+
+            xmlInst = <xml><child idx="0" val="5.25"/><child idx="1" 
val="15.25"/></xml>;
+            list = xmlInst.child;
+            check = list[0].@idx == 0;
+
+            assertTrue(check, 'unexpected numeric equality (non-strict)');
+
+            check = list[0].@idx !== 0;
+
+            assertTrue(check, 'unexpected numeric inequality (strict)');
+
+            check = list[0].@val == 5.25;
+            assertTrue(check, 'unexpected numeric equality (non-strict)');
+
+            check = list[0].@val !== 5.25;
+
+            assertTrue(check, 'unexpected numeric inequality (strict)');
+
+            check = list[0].@idx == valZero;
+
+            assertTrue(check, 'unexpected numeric equality (non-strict)');
+
+            check = list[0].@idx !== valZero;
+
+            assertTrue(check, 'unexpected numeric inequality (strict)');
+
+            check = list[0].@val == valNum;
+            assertTrue(check, 'unexpected numeric equality (non-strict)');
+
+            check = list[0].@val !== valNum;
+
+            assertTrue(check, 'unexpected numeric inequality (strict)');
+
+
+
+
+        }
     }
 }

Reply via email to