Hi Gordon -- thx for the response -- my reason for wanting this is unit testing only...works fast enough for what I need. I don't do this in any production code.
Best regards, Davis On Wed, Jan 6, 2010 at 10:33 PM, Gordon Smith <gosm...@adobe.com> wrote: > > > This is likely to be rather slow, but if you really need to do a > recursive comparison of XML objects, it's probably reasonable. I don't know > of any built-in operator or method that does deep equality. > > > > Gordon Smith > > Adobe Flex SDK Team > > > > *From:* flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] *On > Behalf Of *Davis Ford > *Sent:* Wednesday, January 06, 2010 5:22 PM > *To:* flexcoders@yahoogroups.com > *Subject:* Re: [flexcoders] Testing for XML equality > > > > > > I found a solution: > > > > import mx.utils.ObjectUtil; > > > > Assert.assertTrue(ObjectUtil.compare(xml1, xml2) == 0); > > > > That does the trick. > > > > Regards, > Davis > > On Wed, Jan 6, 2010 at 8:20 PM, Paul Andrews <p...@ipauland.com> wrote: > > Davis Ford wrote: > > > > > > Hi Paul, > > > > I don't believe this is correct for ActionScript3. Strict equality is > > the "===" operator which compares object instances. "==" should test > > for equality. > > I tried (in Flash).. > > var objA:Object = {a:1}; > var objB:Object = {a:1}; > trace(objA==objB); // false > var xmlA:XML = <x>xxx</x>; > var xmlB:XML = <x>xxx</x>; > trace(xmlA==xmlB); // true > trace(xmlA===xmlB); // false > > and indeed you are right. I didn't know that XML was treated differently > from vanilla object in comparisons. > > Thanks. > > Paul > > > > > If you change the test to this... > > > > [Test] > > public function testXmlEquality():void { > > var xml1:XML = > > <a> > > <b></b> > > <c></c> > > </a>; > > var xml2:XML = > > <a> > > <b></b> > > <c></c> > > </a>; > > xml1.normalize(); > > xml2.normalize(); > > Assert.assertTrue(xml1 == xml2); > > } > > > > it passes. XML/e4x is supposed to support this out of the box, and it > > does -- to a degree. Although, semantically and syntactically, xml1 > > and xml2 from the 1st test are equivalent, e4x is not thinking so, and > > I think that is broken. Searching for a workaround has popped up very > > little, which is why I was hoping someone on the list might have a > > good answer for why this is, and how I can test XML equivalence > > without caring about element ordering. > > > > Regards, > > Davis > > > > On Wed, Jan 6, 2010 at 7:03 PM, Paul Andrews <p...@ipauland.com > > > <mailto:p...@ipauland.com>> wrote: > > > > > > Davis Ford wrote: > > > > > > > > > Why does this test fail? Is there any way to test for equality that > > > ignores the ordering of elements -- which shouldn't technically > > matter? > > > > > > [Test] > > > public function testXmlEquality():void { > > > var xml1:XML = > > > <a> > > > <b></b> > > > <c></c> > > > </a>; > > > var xml2:XML = > > > <a> > > > <c></c> > > > <b></b> > > > </a>; > > > Assert.assertTrue(xml1 == xml2); > > > } > > xml1 and xml2 are references to objects. Because they are different > > objects they are not equal - the references are different. > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > Zeno Consulting, Inc. > > home: http://www.zenoconsulting.biz > > blog: http://zenoconsulting.wikidot.com > > p: 248.894.4922 > > f: 313.884.2977 > > > > > > > > > ------------------------------------ > > > -- > Flexcoders Mailing List > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt > Alternative FAQ location: > https://share.acrobat.com/adc/document.do?docid=942dbdc8-e469-446f-b4cf-1e62079f6847 > > Search Archives: > http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups > Links > > http://groups.yahoo.com/group/flexcoders/ > > > > > > > -- > Zeno Consulting, Inc. > home: http://www.zenoconsulting.biz > blog: http://zenoconsulting.wikidot.com > p: 248.894.4922 > f: 313.884.2977 > > > -- Zeno Consulting, Inc. home: http://www.zenoconsulting.biz blog: http://zenoconsulting.wikidot.com p: 248.894.4922 f: 313.884.2977