/
khomec
/
homework5
Обзор
Документация
Войти
/
khomec
/
homework5
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/test/java/GeoPositionTests.java
210 строк
8 KB
Aleksandr Martynets
home5
29 дек 2025, 19:20
29 дек 2025, 19:20
95554f5
Код
Авторство
О чём код?
import org.junit.jupiter.api.Test; import ru.edu.lesson6.GeoPosition; import static org.junit.jupiter.api.Assertions.*; /** * Test class for GeoPosition */ class GeoPositionTests { private static final double DELTA = 0.000001; @Test void testConstructorWithSimpleDegrees() { // Arrange & Act GeoPosition position = new GeoPosition("55", "37"); // Assert assertEquals(Math.toRadians(55), position.getLatitude(), DELTA); assertEquals(Math.toRadians(37), position.getLongitude(), DELTA); assertEquals(55, position.getLatitudeInDegrees(), DELTA); assertEquals(37, position.getLongitudeInDegrees(), DELTA); } @Test void testConstructorWithDegreesMinutesSeconds() { // Arrange & Act GeoPosition position = new GeoPosition("55(45'07'')", "37(37'03'')"); // Assert - 55°45'07" = 55 + 45/60 + 7/3600 = 55.751944° double expectedLatDegrees = 55 + 45.0/60 + 7.0/3600; double expectedLonDegrees = 37 + 37.0/60 + 3.0/3600; assertEquals(Math.toRadians(expectedLatDegrees), position.getLatitude(), DELTA); assertEquals(Math.toRadians(expectedLonDegrees), position.getLongitude(), DELTA); assertEquals(expectedLatDegrees, position.getLatitudeInDegrees(), DELTA); assertEquals(expectedLonDegrees, position.getLongitudeInDegrees(), DELTA); } @Test void testConstructorWithOnlyMinutes() { // Arrange & Act GeoPosition position = new GeoPosition("0(45'00'')", "0(30'00'')"); // Assert assertEquals(Math.toRadians(0.75), position.getLatitude(), DELTA); // 45/60 = 0.75° assertEquals(Math.toRadians(0.5), position.getLongitude(), DELTA); // 30/60 = 0.5° } @Test void testConstructorWithOnlySeconds() { // Arrange & Act GeoPosition position = new GeoPosition("0(00'30'')", "0(00'45'')"); // Assert assertEquals(Math.toRadians(30.0/3600), position.getLatitude(), DELTA); assertEquals(Math.toRadians(45.0/3600), position.getLongitude(), DELTA); } @Test void testConstructorWithMixedFormats() { // Arrange & Act - одна координата простая, другая с минутами/секундами GeoPosition position = new GeoPosition("59", "30(19'00'')"); // Assert assertEquals(Math.toRadians(59), position.getLatitude(), DELTA); double expectedLonDegrees = 30 + 19.0/60; // 30°19'00" = 30.316667° assertEquals(Math.toRadians(expectedLonDegrees), position.getLongitude(), DELTA); } @Test void testConstructorWithExampleFromDocumentation() { // Arrange & Act - пример из документации GeoPosition position = new GeoPosition("59(57'00'')", "30(19'00'')"); // Assert - 59°57'00" = 59.95°, 30°19'00" = 30.316667° double expectedLatDegrees = 59 + 57.0/60; // 59.95° double expectedLonDegrees = 30 + 19.0/60; // 30.316667° assertEquals(Math.toRadians(expectedLatDegrees), position.getLatitude(), DELTA); assertEquals(Math.toRadians(expectedLonDegrees), position.getLongitude(), DELTA); } @Test void testConstructorWithSpaces() { // Arrange & Act - координаты с пробелами GeoPosition position = new GeoPosition(" 55(45'07'') ", " 37(37'03'') "); // Assert double expectedLatDegrees = 55 + 45.0/60 + 7.0/3600; double expectedLonDegrees = 37 + 37.0/60 + 3.0/3600; assertEquals(Math.toRadians(expectedLatDegrees), position.getLatitude(), DELTA); assertEquals(Math.toRadians(expectedLonDegrees), position.getLongitude(), DELTA); } @Test void testGetLatitude() { // Arrange GeoPosition position = new GeoPosition("45", "90"); // Act & Assert assertEquals(Math.toRadians(45), position.getLatitude(), DELTA); assertTrue(position.getLatitude() > 0); assertTrue(position.getLatitude() < Math.PI/2); // Широта в радианах должна быть меньше π/2 } @Test void testGetLongitude() { // Arrange GeoPosition position = new GeoPosition("45", "90"); // Act & Assert assertEquals(Math.toRadians(90), position.getLongitude(), DELTA); assertTrue(position.getLongitude() > 0); assertTrue(position.getLongitude() < Math.PI); // Долгота в радианах должна быть меньше π } @Test void testGetLatitudeInDegrees() { // Arrange GeoPosition position = new GeoPosition("45.5", "180"); // Act & Assert assertEquals(45.5, position.getLatitudeInDegrees(), DELTA); assertTrue(position.getLatitudeInDegrees() >= -90); assertTrue(position.getLatitudeInDegrees() <= 90); } @Test void testGetLongitudeInDegrees() { // Arrange GeoPosition position = new GeoPosition("45", "180"); // Act & Assert assertEquals(180, position.getLongitudeInDegrees(), DELTA); assertTrue(position.getLongitudeInDegrees() >= -180); assertTrue(position.getLongitudeInDegrees() <= 180); } @Test void testToString() { // Arrange GeoPosition position = new GeoPosition("55", "37"); // Act String result = position.toString(); // Assert assertNotNull(result); assertTrue(result.contains("GeoPosition")); assertTrue(result.contains("latitude")); assertTrue(result.contains("longitude")); assertTrue(result.contains("rad")); assertTrue(result.contains("°")); // Проверяем, что строковое представление содержит ожидаемые значения assertTrue(result.contains("55.000000°")); assertTrue(result.contains("37.000000°")); } @Test void testToStringWithDMS() { // Arrange GeoPosition position = new GeoPosition("55(45'07'')", "37(37'03'')"); // Act String result = position.toString(); // Assert assertNotNull(result); assertTrue(result.contains("GeoPosition")); assertTrue(result.contains("55.751944°")); // Проверяем преобразованное значение assertTrue(result.contains("37.617500°")); } @Test void testNegativeCoordinates() { // Arrange & Act - отрицательные координаты GeoPosition position = new GeoPosition("-55", "-37"); // Assert assertEquals(Math.toRadians(-55), position.getLatitude(), DELTA); assertEquals(Math.toRadians(-37), position.getLongitude(), DELTA); } @Test void testDecimalDegrees() { // Arrange & Act - десятичные градусы GeoPosition position = new GeoPosition("55.75", "37.61"); // Assert assertEquals(Math.toRadians(55.75), position.getLatitude(), DELTA); assertEquals(Math.toRadians(37.61), position.getLongitude(), DELTA); } @Test void testBoundaryValues() { // Arrange & Act - граничные значения GeoPosition northPole = new GeoPosition("90", "0"); GeoPosition southPole = new GeoPosition("-90", "0"); GeoPosition greenwich = new GeoPosition("0", "0"); // Assert assertEquals(Math.toRadians(90), northPole.getLatitude(), DELTA); assertEquals(Math.toRadians(-90), southPole.getLatitude(), DELTA); assertEquals(0, greenwich.getLatitude(), DELTA); assertEquals(0, greenwich.getLongitude(), DELTA); } }