package com.sherpaonnxofflinestt import com.sherpaonnxofflinestt.utils.STTLogger import org.junit.Before import org.junit.Test import org.junit.Assert.* /** * Unit tests for STTLogger */ class STTLoggerTest { @Before fun setUp() { // Reset to default state before each test STTLogger.enabled = true STTLogger.minLevel = STTLogger.Level.INFO } @Test fun `log levels have correct priority ordering`() { assertTrue(STTLogger.Level.DEBUG.priority < STTLogger.Level.INFO.priority) assertTrue(STTLogger.Level.INFO.priority < STTLogger.Level.WARN.priority) assertTrue(STTLogger.Level.WARN.priority < STTLogger.Level.ERROR.priority) } @Test fun `setLevelFromString sets correct level for debug`() { STTLogger.setLevelFromString("debug") assertEquals(STTLogger.Level.DEBUG, STTLogger.minLevel) } @Test fun `setLevelFromString sets correct level for info`() { STTLogger.setLevelFromString("info") assertEquals(STTLogger.Level.INFO, STTLogger.minLevel) } @Test fun `setLevelFromString sets correct level for warn`() { STTLogger.setLevelFromString("warn") assertEquals(STTLogger.Level.WARN, STTLogger.minLevel) // Also test "warning" variant STTLogger.setLevelFromString("warning") assertEquals(STTLogger.Level.WARN, STTLogger.minLevel) } @Test fun `setLevelFromString sets correct level for error`() { STTLogger.setLevelFromString("error") assertEquals(STTLogger.Level.ERROR, STTLogger.minLevel) } @Test fun `setLevelFromString is case insensitive`() { STTLogger.setLevelFromString("DEBUG") assertEquals(STTLogger.Level.DEBUG, STTLogger.minLevel) STTLogger.setLevelFromString("Info") assertEquals(STTLogger.Level.INFO, STTLogger.minLevel) } @Test fun `setLevelFromString defaults to INFO for unknown level`() { STTLogger.setLevelFromString("unknown") assertEquals(STTLogger.Level.INFO, STTLogger.minLevel) STTLogger.setLevelFromString("") assertEquals(STTLogger.Level.INFO, STTLogger.minLevel) } @Test fun `enableDebug sets level to DEBUG`() { STTLogger.enableDebug() assertEquals(STTLogger.Level.DEBUG, STTLogger.minLevel) } @Test fun `enableProductionMode sets level to WARN`() { STTLogger.enableProductionMode() assertEquals(STTLogger.Level.WARN, STTLogger.minLevel) } @Test fun `enabled flag defaults to true`() { assertTrue(STTLogger.enabled) } @Test fun `minLevel defaults to INFO`() { // This relies on the @Before setup assertEquals(STTLogger.Level.INFO, STTLogger.minLevel) } @Test fun `module loggers are accessible`() { // Just verify these exist and don't throw assertNotNull(STTLogger.Diarization) assertNotNull(STTLogger.VAD) assertNotNull(STTLogger.Recognition) assertNotNull(STTLogger.Denoiser) assertNotNull(STTLogger.Audio) assertNotNull(STTLogger.Events) assertNotNull(STTLogger.Streaming) assertNotNull(STTLogger.Pyannote) } }