Coverage for python/lsst/geom/testUtils.py : 73%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# # Developed for the LSST Data Management System. # This product includes software developed by the LSST Project # (https://www.lsst.org). # See the COPYRIGHT file at the top-level directory of this distribution # for details of code ownership. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. #
In the case of the assert functions, importing them makes them available in lsst.utils.tests.TestCase """
"""Format extra error message, if any """
ignoreWrap=True, msg="Angles differ"): r"""Assert that two `~lsst.afw.geom.Angle`\ s are almost equal, ignoring wrap differences by default
Parameters ---------- testCase : `unittest.TestCase` test case the test is part of; an object supporting one method: fail(self, msgStr) ang0 : `lsst.afw.geom.Angle` angle 0 ang1 : `an lsst.afw.geom.Angle` angle 1 maxDiff : `an lsst.afw.geom.Angle` maximum difference between the two angles ignoreWrap : `bool` ignore wrap when comparing the angles? - if True then wrap is ignored, e.g. 0 and 360 degrees are considered equal - if False then wrap matters, e.g. 0 and 360 degrees are considered different msg : `str` exception message prefix; details of the error are appended after ": "
Raises ------ AssertionError Raised if the difference is greater than ``maxDiff`` """ (msg, measDiff.asArcseconds(), maxDiff.asArcseconds()))
"""Assert that two Cartesian points are almost equal.
Each point can be any indexable pair of two floats, including Point2D or Extent2D, a list or a tuple.
Parameters ---------- testCase : `unittest.TestCase` test case the test is part of; an object supporting one method: fail(self, msgStr) pair0 : pair of `float` pair 0 pair1 : pair of `floats` pair 1 maxDiff : `float` maximum radial separation between the two points msg : `str` exception message prefix; details of the error are appended after ": "
Raises ------ AssertionError Raised if the radial difference is greater than ``maxDiff``
Notes ----- .. warning::
Does not compare types, just compares values. """ raise RuntimeError("len(pair0)=%s != 2" % (len(pair0),)) raise RuntimeError("len(pair1)=%s != 2" % (len(pair1),))
(msg, measDiff, maxDiff, pair0[0], pair0[1], pair1[0], pair1[1]))
"""Assert that two lists of Cartesian points are almost equal
Each point can be any indexable pair of two floats, including Point2D or Extent2D, a list or a tuple.
Parameters ---------- testCase : `unittest.TestCase` test case the test is part of; an object supporting one method: fail(self, msgStr) list0 : `list` of pairs of `float` list of pairs 0 list1 : `list` of pairs of `float` list of pairs 1 maxDiff : `float` maximum radial separation between the two points msg : `str` additional information for the error message; appended after ": "
Raises ------ AssertionError Raised if the radial difference is greater than ``maxDiff``
Notes ----- .. warning::
Does not compare types, just values. """ testCase.assertEqual(len(list0), len(list1)) lenList1 = np.array([len(val) for val in list0]) lenList2 = np.array([len(val) for val in list1]) testCase.assertTrue(np.all(lenList1 == 2)) testCase.assertTrue(np.all(lenList2 == 2))
diffArr = np.array([(val0[0] - val1[0], val0[1] - val1[1]) for val0, val1 in zip(list0, list1)], dtype=float) sepArr = np.hypot(diffArr[:, 0], diffArr[:, 1]) badArr = sepArr > maxDiff if np.any(badArr): maxInd = np.argmax(sepArr) testCase.fail("PairLists differ in %s places; max separation is at %s: %s > %s%s" % (np.sum(badArr), maxInd, sepArr[maxInd], maxDiff, extraMsg(msg)))
r"""Assert that two `~lsst.afw.geom.SpherePoint`\ s are almost equal
Parameters ---------- testCase : `unittest.TestCase` test case the test is part of; an object supporting one method: fail(self, msgStr) sp0 : `lsst.afw.geom.SpherePoint` SpherePoint 0 sp1 : `lsst.afw.geom.SpherePoint` SpherePoint 1 maxSep : `lsst.afw.geom.Angle` maximum separation msg : `str` extra information to be printed with any error message """ (sp0, sp1, sp0.separation(sp1).asArcseconds(), maxSep.asArcseconds(), extraMsg(msg)))
r"""Assert that two lists of `~lsst.afw.geom.SpherePoint`\ s are almost equal
Parameters ---------- testCase : `unittest.TestCase` test case the test is part of; an object supporting one method: fail(self, msgStr) splist0 : `list` of `lsst.afw.geom.SpherePoint` list of SpherePoints 0 splist1 : `list` of `lsst.afw.geom.SpherePoint` list of SpherePoints 1 maxSep : `lsst.afw.geom.Angle` maximum separation msg : `str` exception message prefix; details of the error are appended after ": " """ for sp0, sp1 in zip(splist0, splist1)]) (np.sum(badArr), maxInd, sepArr[maxInd].asArcseconds(), maxSep.asArcseconds(), extraMsg(msg)))
"""Assert that two boxes (`~lsst.afw.geom.Box2D` or `~lsst.afw.geom.Box2I`) are almost equal
Parameters ---------- testCase : `unittest.TestCase` test case the test is part of; an object supporting one method: fail(self, msgStr) box0 : `lsst.afw.geom.Box2D` or `lsst.afw.geom.Box2I` box 0 box1 : `lsst.afw.geom.Box2D` or `lsst.afw.geom.Box2I` box 1 maxDiff : `float` maximum radial separation between the min points and max points msg : `str` exception message prefix; details of the error are appended after ": "
Raises ------ AssertionError Raised if the radial difference of the min points or max points is greater than maxDiff
Notes ----- .. warning::
Does not compare types, just compares values. """ box1.getMin(), maxDiff=maxDiff, msg=msg + ": min") box1.getMax(), maxDiff=maxDiff, msg=msg + ": max") |