Coverage for tests/test_LonLat.py: 32%
25 statements
« prev ^ index » next coverage.py v7.5.0, created at 2024-05-02 03:12 -0700
« prev ^ index » next coverage.py v7.5.0, created at 2024-05-02 03:12 -0700
1# This file is part of sphgeom.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This software is dual licensed under the GNU General Public License and also
10# under a 3-clause BSD license. Recipients may choose which of these licenses
11# to use; please see the files gpl-3.0.txt and/or bsd_license.txt,
12# respectively. If you choose the GPL option then the following text applies
13# (but note that there is still no warranty even if you opt for BSD instead):
14#
15# This program is free software: you can redistribute it and/or modify
16# it under the terms of the GNU General Public License as published by
17# the Free Software Foundation, either version 3 of the License, or
18# (at your option) any later version.
19#
20# This program is distributed in the hope that it will be useful,
21# but WITHOUT ANY WARRANTY; without even the implied warranty of
22# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23# GNU General Public License for more details.
24#
25# You should have received a copy of the GNU General Public License
26# along with this program. If not, see <http://www.gnu.org/licenses/>.
28import pickle
29import unittest
31from lsst.sphgeom import Angle, LonLat, NormalizedAngle, UnitVector3d
34class LonLatTestCase(unittest.TestCase):
35 """Test LonLat."""
37 def testConstruction(self):
38 p = LonLat.fromDegrees(45, 45)
39 self.assertEqual(p, LonLat(NormalizedAngle.fromDegrees(45), Angle.fromDegrees(45)))
40 u = UnitVector3d(p)
41 q = LonLat(u)
42 self.assertAlmostEqual(p.getLon().asRadians(), q.getLon().asRadians(), places=13)
43 self.assertAlmostEqual(p.getLat().asRadians(), q.getLat().asRadians(), places=13)
44 self.assertAlmostEqual(p.getLon().asRadians(), LonLat.latitudeOf(u).asRadians(), places=13)
45 self.assertAlmostEqual(p.getLon().asRadians(), LonLat.longitudeOf(u).asRadians(), places=13)
47 def testComparisonOperators(self):
48 self.assertEqual(LonLat.fromDegrees(45, 45), LonLat.fromDegrees(45, 45))
49 self.assertNotEqual(LonLat.fromDegrees(0, 0), LonLat.fromDegrees(45, 45))
51 def testString(self):
52 p = LonLat.fromRadians(1, 1)
53 self.assertEqual(str(p), "[1.0, 1.0]")
54 self.assertEqual(repr(p), "LonLat.fromRadians(1.0, 1.0)")
55 self.assertEqual(p, eval(repr(p), {"LonLat": LonLat}))
57 def testPickle(self):
58 p = LonLat.fromRadians(2, 1)
59 q = pickle.loads(pickle.dumps(p))
60 self.assertEqual(p, q)
63if __name__ == "__main__":
64 unittest.main()