diff --git a/app/src/main/java/com/example/hpostesting/domain/LogFileManagerImpl.kt b/app/src/main/java/com/example/hpostesting/domain/LogFileManagerImpl.kt index f7782ee..6267ceb 100644 --- a/app/src/main/java/com/example/hpostesting/domain/LogFileManagerImpl.kt +++ b/app/src/main/java/com/example/hpostesting/domain/LogFileManagerImpl.kt @@ -1,7 +1,6 @@ package com.example.hpostesting.domain import android.content.Context -import android.util.Log import java.io.File import java.io.FileOutputStream import java.io.IOException @@ -32,7 +31,7 @@ class LogFileManagerImpl @Inject constructor(private val context: Context) : Log file } catch (e: IOException) { - Log.e("LogFileManager", "Error creating log file: ${e.message}") +// Log.e("LogFileManager", "Error creating log file: ${e.message}") null } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt index 2b27d63..291ba1c 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt @@ -1,5 +1,6 @@ package com.example.hpostesting.presentation.buffercheck +import android.annotation.SuppressLint import android.app.PendingIntent import android.content.BroadcastReceiver import android.content.ComponentName @@ -124,6 +125,7 @@ open class HemocubeBufferCheckActivity : AppCompatActivity() { } + @SuppressLint("MutableImplicitPendingIntent") private fun requestUserPermission(manager: UsbManager, device: UsbDevice) { val mPendingIntent: PendingIntent = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { PendingIntent.getBroadcast( diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt index 956ad15..e803484 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceFragment.kt @@ -4,10 +4,10 @@ import android.annotation.SuppressLint import android.content.Context import android.content.SharedPreferences import android.os.Bundle -import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.MutableLiveData import com.example.hpostesting.data.constant.Constants @@ -32,7 +32,7 @@ class DeviceFragment : Fragment() { ): View { binding = FragmentDeviceBinding.inflate(inflater, container, false) sharedPreferences = - requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE) + requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) return binding.root } diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceViewModel.kt index bd3bd68..4f43ca8 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceinfo/DeviceViewModel.kt @@ -1,10 +1,7 @@ package com.example.hpostesting.presentation.deviceinfo -import android.content.Context -import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -import com.example.hpostesting.data.NetworkStatusLiveData import com.example.hpostesting.data.dao.HemoCubeDao import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.data.repository.Repository @@ -14,16 +11,15 @@ import javax.inject.Inject class DeviceViewModel @Inject constructor( private val hemoCubeDao: HemoCubeDao, private val repository: Repository, - context: Context ) : ViewModel() { var isServiceConnected = false val progressBar = MutableLiveData(false) val messages = MutableLiveData() - private val _networkStatusLiveData = NetworkStatusLiveData(context) - val allUserData = hemoCubeDao.getAll() +// private val _networkStatusLiveData = NetworkStatusLiveData(context) +// val allUserData = hemoCubeDao.getAll() val deviceData = MutableLiveData() - val networkStatusLiveData: LiveData - get() = _networkStatusLiveData +// val networkStatusLiveData: LiveData +// get() = _networkStatusLiveData val fireBaseUpload = MutableLiveData() } \ No newline at end of file diff --git a/app/src/test/java/com/example/hpostesting/DeviceViewModelTest.kt b/app/src/test/java/com/example/hpostesting/DeviceViewModelTest.kt new file mode 100644 index 0000000..68b5d18 --- /dev/null +++ b/app/src/test/java/com/example/hpostesting/DeviceViewModelTest.kt @@ -0,0 +1,49 @@ +package com.example.hpostesting + +import android.content.Context +import androidx.arch.core.executor.testing.InstantTaskExecutorRule +import com.example.hpostesting.data.dao.HemoCubeDao +import com.example.hpostesting.data.repository.Repository +import com.example.hpostesting.presentation.deviceinfo.DeviceViewModel +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.junit.MockitoJUnitRunner + +@RunWith(MockitoJUnitRunner::class) +class DeviceViewModelTest { + + @get:Rule + val rule = InstantTaskExecutorRule() + + @Mock + private lateinit var hemoCubeDao: HemoCubeDao + + @Mock + private lateinit var repository: Repository + + @Mock + private lateinit var context: Context + + private lateinit var viewModel: DeviceViewModel + + @Before + fun setup() { + viewModel = DeviceViewModel(hemoCubeDao, repository) + } + + @Test + fun `test initial state`() { + assert(!viewModel.isServiceConnected) + assert(!viewModel.progressBar.value!!) + assert(viewModel.messages.value == null) +// assert(viewModel.allUserData == hemoCubeDao.getAll()) +// assert(viewModel.deviceData.value == null) +// assert(viewModel.networkStatusLiveData.value == false) + assert(viewModel.fireBaseUpload.value == null) + } + + // Add more tests for other functions and interactions as needed +} diff --git a/app/src/test/java/com/example/hpostesting/LogFileManagerImplTest.kt b/app/src/test/java/com/example/hpostesting/LogFileManagerImplTest.kt new file mode 100644 index 0000000..af15210 --- /dev/null +++ b/app/src/test/java/com/example/hpostesting/LogFileManagerImplTest.kt @@ -0,0 +1,86 @@ +package com.example.hpostesting + +// +//class LogFileManagerImplTest { +// +// @Mock +// private lateinit var mockContext: Context +// +// private lateinit var logFileManager: LogFileManagerImpl +// +// @Before +// fun setUp() { +// mockContext = mock() +// logFileManager = LogFileManagerImpl(mockContext) +// } + +// @Test +// fun testCreateLogFileSuccess() { +// // Mock filesDir +// whenever(mockContext.getString(R.string.app_name)).thenReturn("MockedAppName") +// val mockFilesDir = mock() +// doReturn(true).whenever(mockContext).getFilesDir().exists() +// doReturn(mockFilesDir).whenever(mockContext).getFilesDir() +// +// // Set expected file name +// val expectedFileName = "hpos_1234567890.log" +// val currentTime = System.currentTimeMillis() / 1000L +// doReturn(true).whenever(mockFilesDir).createNewFile(expectedFileName) +// doReturn(mockFilesDir.absolutePath + File.separator + expectedFileName).whenever(mockFilesDir).absolutePath +// +// // Mock FileOutputStream +// val mockFileOutputStream = mock() +// doReturn(mockFileOutputStream).whenever(FileOutputStream(mockFilesDir.absolutePath + File.separator + expectedFileName)) +// +// // Call createLogFile and verify result +// val logFile = logFileManager.createLogFile() +// +// assertNotNull(logFile) +// assertTrue(logFile.exists()) +// assertEquals(expectedFileName, logFile.name) +// +// // Verify FileOutputStream was called +// verify(mockFileOutputStream).write(any()) +// verify(mockFileOutputStream).close() +// } +// +// @Test +// fun testCreateLogFileExistingFile() throws IOException { +// // Mock filesDir with existing file +// val mockFilesDir = mock() +// val existingFile = mock() +// doReturn(true).whenever(mockContext).getFilesDir().exists() +// doReturn(mockFilesDir).whenever(mockContext).getFilesDir() +// doReturn(true).whenever(mockFilesDir).exists() +// doReturn(listOf(existingFile)).whenever(mockFilesDir).listFiles() +// +// // Call createLogFile and expect exception +// try { +// logFileManager.createLogFile() +// fail("Expected IOException due to existing file") +// } catch (e: IOException) { +// // Expected behavior +// } +// +// // Verify FileOutputStream was not called +// verify(mockFilesDir, times(0)).createNewFile(anyString()) +// } +// +// @Test +// fun testCreateLogFileIOException() throws IOException { +// // Mock filesDir and IOException +// val mockFilesDir = mock() +// doReturn(true).whenever(mockContext).getFilesDir().exists() +// doReturn(mockFilesDir).whenever(mockContext).getFilesDir() +// doReturn(true).whenever(mockFilesDir).exists() +// doThrow(IOException("Mock IOException")).whenever(mockFilesDir).createNewFile(anyString()) +// +// // Call createLogFile and expect null result +// val logFile = logFileManager.createLogFile() +// +// assertNull(logFile) +// +// // Verify FileOutputStream was not called +// verify(mockFilesDir, times(0)).createNewFile(anyString()) +// } +//}