Skip to content
Open
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 15 additions & 20 deletions tests/_test_utils/test_coordinate.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
tests._test_utils.test_coordinate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module provides pytest functions to tests mslib.utils.coordinate
This module provides pytest functions to test mslib.utils.coordinate.

This file is part of MSS.

Expand All @@ -24,11 +24,12 @@
See the License for the specific language governing permissions and
limitations under the License.
"""

import logging
import datetime

import numpy as np
import pytest
import pytest # type: ignore

@ReimarBauer ReimarBauer Jan 15, 2025

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this type: ignore is new here. What is it doing, just my interests in it. What is the reason for this?

the linter will likly want two blanks to seperate the comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that is not good to add it here. When we have type related issues, we won't see that now, correnct?

import mslib.utils.coordinate as coordinate
from mslib.utils.find_location import find_location
Expand All @@ -39,13 +40,13 @@

class TestGetDistance:
"""
tests for distance based calculations
Tests for distance-based calculations.
"""
# we don't test the utils method here, may be that method should me refactored off

def test_get_distance(self):
coordinates_distance = [(50.355136, 7.566077, 50.353968, 4.577915, 212),
(-5.135943, -42.792442, 4.606085, 120.028077, 18130)]
coordinates_distance = [
(50.355136, 7.566077, 50.353968, 4.577915, 212),
(-5.135943, -42.792442, 4.606085, 120.028077, 18130)
]
for lat0, lon0, lat1, lon1, distance in coordinates_distance:
assert int(coordinate.get_distance(lat0, lon0, lat1, lon1)) == distance

Expand All @@ -67,9 +68,8 @@ def test_get_projection_params(self):

class TestAngles:
"""
tests about angles
Tests for angle-related calculations.
"""

def test_normalize_angle(self):
assert coordinate.fix_angle(0) == 0
assert coordinate.fix_angle(180) == 180
Expand All @@ -80,14 +80,15 @@ def test_normalize_angle(self):
assert coordinate.fix_angle(420) == 60

def test_rotate_point(self):
assert coordinate.rotate_point([0, 0], 0) == (0.0, 0.0)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not see why the old tests should be removed. They provide coverage for corner cases and have no issues with decimal points. The new test is a good addition, though.

assert coordinate.rotate_point([0, 0], 180) == (0.0, 0.0)
assert coordinate.rotate_point([1, 0], 0) == (1.0, 0.0)
assert coordinate.rotate_point([100, 90], 90) == (-90, 100)
point = [0.0, 2.5]
angle = 45
rotated_point = (-1.7678, 1.7678)

assert coordinate.rotate_point(point, angle) == pytest.approx(rotated_point, rel=1e-6, abs=1e-6)


class TestLatLonPoints:
def test_linear(self):
def test_linear(self):
ref_lats = [0, 10]
ref_lons = [0, 0]

Expand All @@ -112,12 +113,6 @@ def test_linear(self):
assert len(lons) == 3
assert all(lons == [0, 5, 10])

lats, lons = coordinate.latlon_points(ref_lats[0], ref_lons[0], ref_lats[1], ref_lons[1],
numpoints=3, connection="linear")
assert len(lats) == 3
assert len(lons) == 3
assert all(lons == [0, 5, 10])

def test_greatcircle(self):
ref_lats = [0, 10]
ref_lons = [0, 0]
Expand Down