Files
openlayers/tests/Test.AnotherWay.geom_eq.js
Marc Jansen 57c16b7345 Various enhancements to the testsuite:
- split resources of the suite (CSS, HTML, !JavaScript)
  - dedicated files for our changes to the suite
  - CSS enhancements (e.g. hover colors)
  - a simple quicksearch/filter for the list of testfiles (Only for browsers that support querySelectorAll)
  - links to the testfiles to easily bypass browser cache
  - running time info panel
  - detailed total number of testcases that failed/were ok

Non-functional change (closes #3507)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@12378 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
2011-09-17 17:36:14 +00:00

110 lines
3.7 KiB
JavaScript

/**
* File: Test.AnotherWay.geom_eq.js
* Adds a geom_eq method to AnotherWay test objects.
*
*/
(function() {
/**
* Function assertEqual
* Test two objects for equivalence (based on ==). Throw an exception
* if not equivalent.
*
* Parameters:
* got - {Object}
* expected - {Object}
* msg - {String} The message to be thrown. This message will be appended
* with ": got {got} but expected {expected}" where got and expected are
* replaced with string representations of the above arguments.
*/
function assertEqual(got, expected, msg) {
if(got === undefined) {
got = "undefined";
} else if (got === null) {
got = "null";
}
if(expected === undefined) {
expected = "undefined";
} else if (expected === null) {
expected = "null";
}
if(got != expected) {
throw msg + ": got '" + got + "' but expected '" + expected + "'";
}
}
/**
* Function assertGeometryEqual
* Test two geometries for equivalence. Geometries are considered
* equivalent if they are of the same class, and given component
* geometries, if all components are equivalent. Throws a message as
* exception if not equivalent.
*
* Parameters:
* got - {OpenLayers.Geometry}
* expected - {OpenLayers.Geometry}
* options - {Object} Optional object for configuring test options.
*/
function assertGeometryEqual(got, expected, options) {
var OpenLayers = Test.AnotherWay._g_test_iframe.OpenLayers;
// compare types
assertEqual(typeof got, typeof expected, "Object types mismatch");
// compare classes
assertEqual(got.CLASS_NAME, expected.CLASS_NAME, "Object class mismatch");
if(got instanceof OpenLayers.Geometry.Point) {
// compare points
assertEqual(got.x, expected.x, "x mismatch");
assertEqual(got.y, expected.y, "y mismatch");
assertEqual(got.z, expected.z, "z mismatch");
} else {
// compare components
assertEqual(
got.components.length, expected.components.length,
"Component length mismatch for " + got.CLASS_NAME
);
for(var i=0; i<got.components.length; ++i) {
try {
assertGeometryEqual(
got.components[i], expected.components[i], options
);
} catch(err) {
throw "Bad component " + i + " for " + got.CLASS_NAME + ": " + err;
}
}
}
return true;
}
/**
* Function: Test.AnotherWay._test_object_t.geom_eq
* Test if two geometry objects are equivalent. Tests for same geometry
* class, same number of components (if any), equivalent component
* geometries, and same coordinates.
*
* (code)
* t.geom_eq(got, expected, message);
* (end)
*
* Parameters:
* got - {OpenLayers.Geometry} Any geometry instance.
* expected - {OpenLayers.Geometry} The expected geometry.
* msg - {String} A message to print with test output.
* options - {Object} Optional object for configuring test options.
*/
var proto = Test.AnotherWay._test_object_t.prototype;
proto.geom_eq = function(got, expected, msg, options) {
// test geometries for equivalence
try {
assertGeometryEqual(got, expected, options);
this.ok(true, msg);
} catch(err) {
this.fail(msg + ": " + err);
}
}
})();