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 <[email protected]>
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)');
+
+
+
+
+ }
}
}