package com.example import android.content.Context import androidx.test.core.app.ApplicationProvider import com.example.data.mediastore.DemoMediaProvider import com.example.data.model.MediaItemData import com.example.data.model.MediaTypeFilter import com.example.data.model.SortOption import com.example.data.model.SortOrder import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertNotNull import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) @Config(sdk = [34]) class ExampleRobolectricTest { @Test fun `read string from context verifies SwipePlay app name`() { val context = ApplicationProvider.getApplicationContext() val appName = context.getString(R.string.app_name) assertEquals("SwipePlay", appName) } @Test fun `demo media provider creates playable synthetic sample files`() { val context = ApplicationProvider.getApplicationContext() val sampleList = DemoMediaProvider.getOrCreateDemoMedia(context) assertFalse(sampleList.isEmpty()) val first = sampleList.first() assertNotNull(first.contentUri) assertTrue(first.durationMs > 0) assertEquals("audio/wav", first.mimeType) assertFalse(first.isVideo) } @Test fun `media item formatted duration outputs correct timestamps`() { val item1 = MediaItemData( id = "1", contentUri = "uri", title = "Test", durationMs = 65000L // 1 min 5 sec ) assertEquals("01:05", item1.formattedDuration) val item2 = MediaItemData( id = "2", contentUri = "uri", title = "Test Hour", durationMs = 3665000L // 1h 1m 5s ) assertEquals("1:01:05", item2.formattedDuration) } @Test fun `media item formatted size calculates MB accurately`() { val item = MediaItemData( id = "1", contentUri = "uri", title = "Test", sizeBytes = 15 * 1024 * 1024L ) assertTrue(item.formattedSize.contains("15.0 MB")) } @Test fun `saving and restoring last played info in UserPreferencesRepository`() = runTest { val context = ApplicationProvider.getApplicationContext() val prefs = com.example.data.prefs.UserPreferencesRepository(context) prefs.saveLastPlayed( id = "audio_99", uri = "content://media/99", positionMs = 45000L, isVideo = false, title = "Night Drive" ) val restored = prefs.lastPlayedFlow.first() assertNotNull(restored) assertEquals("audio_99", restored?.mediaId) assertEquals(45000L, restored?.positionMs) assertEquals(false, restored?.isVideo) assertEquals("Night Drive", restored?.title) } }