[OpenLayers-Dev] Testing for equivalence in XML with xml_eq

Erik Uzureau euzuro at gmail.com
Fri Feb 22 17:23:04 EST 2008


Tim, this is a nice new addition to the testing suite. Great work!

a) do you think you could put a copy of this email in a wiki
somewhere? It would probably be nice to be able to refer back to this
in the future

b) have you contacted the Test.Anotherway people to see if they would
be interested in a patch?

Erik

On 2/22/08, Tim Schaub <tschaub at openplans.org> wrote:
> Hey-
>
> So, I assume that the people for whom this is relevant already read
> commit messages, but I thought I'd document an addition to our testing
> framework here anyway.
>
> If you're writing tests for anything that does parsing of XML, I've
> added a method to Test.AnotherWay test objects that will be useful.  The
> new xml_eq method is similar to html_eq except it works for generic xml
> (and works in Safari and FF3 where html_eq fails).
>
> Use is pretty straightforward.  You can compare element nodes to element
> nodes, nodes to strings, or strings to strings.
>
> I added a single script to our run-tests.html page that extends
> Test.AnotherWay:
> http://trac.openlayers.org/browser/trunk/openlayers/tests/xml_eq.js
>
> Though I grimace when I see this much code in email, I'll paste a couple
> examples:
>
> // Pretend we're on a test page in a test function
> var format = new OpenLayers.Format.XML();
> var doc, got, exp;
>
> // Create a doc and check that root is equivalent to some string
> doc = format.read(
>     "<chicken>soup</chicken>"
> );
> got = doc.documentElement;
> exp = "<chicken>soup</chicken>";
> t.xml_eq(got, exp, "passes");
>
> // See what happens with bad expectations
> exp = "<chicken>fat</chicken>";
> t.xml_eq(got, exp, "fails");
> // Fails with the following message:
> // Bad child 0 for element chicken: Node value mismatch: got soup
> // but expected fat
>
> // Test xml with different namespace aliases
> got = "<foo:chicken xmlns:foo='namespace'>soup</foo:chicken>";
> exp = "<bar:chicken xmlns:bar='namespace'>soup</bar:chicken>";
> t.xml_eq(got, exp, "passes");
>
> // Assert that prefixes are equal
> t.xml_eq(got, exp, "fails", {prefix: true});
> // Fails with the following message:
> // Node name mismatch: got foo:chicken but expected bar:chicken
>
>
> Etc.
>
> Tim
>
> _______________________________________________
> Dev mailing list
> Dev at openlayers.org
> http://openlayers.org/mailman/listinfo/dev
>



More information about the Dev mailing list