package com.grigowashere.aismap.utils;

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

/**
 * Тест для проверки новых методов логирования с полным NMEA и BLE кусками
 */
public class LogSenderExtendedTest {

    @Test
    public void testAISParseErrorWithFullNMEA() {
        // Тестируем новый метод с полным NMEA сообщением
        try {
            String fullNMEA = "!AIVDM,1,1,,A,D02VqQ1K`Nfq@AN>56DK6E@UK6E1H0,*AB";
            String aisPayload = "D02VqQ1K`Nfq@AN>56DK6E@UK6E1H0";
            
            LogSender.logAISParseErrorWithFullNMEA("Неподдерживаемый тип", fullNMEA, aisPayload, "Тип: 20");
            assertTrue("logAISParseErrorWithFullNMEA должен работать без исключений", true);
        } catch (Exception e) {
            fail("logAISParseErrorWithFullNMEA должен работать без исключений: " + e.getMessage());
        }
    }

    @Test
    public void testBLEDataChunkLogging() {
        // Тестируем логирование BLE кусков
        try {
            String deviceMac = "AA:BB:CC:DD:EE:FF";
            String dataChunk = "$GPGGA,123456,1234.5678,N,12345.6789,E,1,8,1.2,123.4,M,45.6,M,,*AB\r\n";
            
            LogSender.logBLEDataChunk(deviceMac, dataChunk);
            assertTrue("logBLEDataChunk должен работать без исключений", true);
        } catch (Exception e) {
            fail("logBLEDataChunk должен работать без исключений: " + e.getMessage());
        }
    }

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

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