package com.grigowashere.aismap.utils;

import org.junit.Test;
import static org.junit.Assert.*;

/**
 * Тест для проверки логирования ошибок через LogSender
 */
public class LogSenderTest {

    @Test
    public void testLogError() {
        // Тестируем, что метод logError не падает с исключениями
        try {
            LogSender.logError("TEST_ERROR", "Тестовое сообщение", "Тестовые детали");
            // Если метод выполнился без исключений, тест прошел
            assertTrue(true);
        } catch (Exception e) {
            fail("logError должен работать без исключений: " + e.getMessage());
        }
    }

    @Test
    public void testLogDroppedNMEA() {
        // Тестируем логирование отброшенных NMEA сообщений
        try {
            LogSender.logDroppedNMEA("Тестовая причина", "$GPGGA,123456,1234.5678,N,12345.6789,E,1,8,1.2,123.4,M,45.6,M,,*AB", "Тестовые детали");
            assertTrue(true);
        } catch (Exception e) {
            fail("logDroppedNMEA должен работать без исключений: " + e.getMessage());
        }
    }

    @Test
    public void testLogAISParseError() {
        // Тестируем логирование ошибок парсинга AIS
        try {
            LogSender.logAISParseError("Тестовая ошибка", "!AIVDM,1,1,,A,1234567890ABCDEF,*AB", "Тестовые детали");
            assertTrue(true);
        } catch (Exception e) {
            fail("logAISParseError должен работать без исключений: " + e.getMessage());
        }
    }

    @Test
    public void testLogBLEError() {
        // Тестируем логирование ошибок BLE
        try {
            LogSender.logBLEError("Тестовая ошибка BLE", "AA:BB:CC:DD:EE:FF", "Тестовые детали");
            assertTrue(true);
        } catch (Exception e) {
            fail("logBLEError должен работать без исключений: " + e.getMessage());
        }
    }

    @Test
    public void testLogErrorWithNullValues() {
        // Тестируем обработку null значений
        try {
            LogSender.logError(null, null, null);
            LogSender.logDroppedNMEA(null, null, null);
            LogSender.logAISParseError(null, null, null);
            LogSender.logBLEError(null, null, null);
            assertTrue(true);
        } catch (Exception e) {
            fail("Методы должны обрабатывать null значения: " + e.getMessage());
        }
    }
}
