diff --git a/app/src/test/java/com/example/hpostesting/HemoCubeFragmentTest.kt b/app/src/test/java/com/example/hpostesting/HemoCubeFragmentTest.kt index 6c5e826..aec7b3c 100644 --- a/app/src/test/java/com/example/hpostesting/HemoCubeFragmentTest.kt +++ b/app/src/test/java/com/example/hpostesting/HemoCubeFragmentTest.kt @@ -5,6 +5,8 @@ import com.example.hpostesting.presentation.hemocube.HemoCubeFragment import com.example.hpostesting.presentation.hemocube.HemocubeActivity import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding import junit.framework.TestCase +import junit.framework.TestCase.assertEquals +import junit.framework.TestCase.assertNull import org.junit.Before import org.junit.Test import org.mockito.ArgumentMatchers @@ -42,7 +44,7 @@ class HemoCubeFragmentTest { ).thenReturn("dummy_value") // Act - val deviceId = hemoCubeFragment.extractMiddleString("SNS HPP1-9000 SNE") + val deviceId = hemoCubeFragment.extractV2HardwareId("SNS HPP1-9000 SNE") // Assert TestCase.assertEquals("HPP1-9000", deviceId) @@ -81,4 +83,186 @@ class HemoCubeFragmentTest { TestCase.assertEquals(true, result) TestCase.assertEquals(hemoCubeFragment.allReadingsComplete(0, 1), false) } + + @Test + fun `extractV1HardwareId should return hardware ID when input contains SN`() { + // Arrange + val input = "Some text SN ABC123 some more text" + + // Act + val result = hemoCubeFragment.extractV1HardwareId(input) + + // Assert + assertEquals("ABC123", result) + } + + @Test + fun `extractV1HardwareId should return null when input does not contain SN`() { + // Arrange + val input = "Some text without SN" + + // Act + val result = hemoCubeFragment.extractV1HardwareId(input) + + // Assert + assertNull(result) + } + + @Test + fun `extractV1HardwareId should return null when input is empty`() { + // Arrange + val input = "" + + // Act + val result = hemoCubeFragment.extractV1HardwareId(input) + + // Assert + assertNull(result) + } + + @Test + fun `extractV1HardwareId should return null when input is null`() { + // Arrange + val input: String? = null + + // Act + val result = input?.let { hemoCubeFragment.extractV1HardwareId(it) } + + // Assert + assertNull(result) + } + + @Test + fun `extractV1HardwareId should return hardware ID when input contains SN in a specific format`() { + // Arrange + val input = """ + SN HCV-000-3001 + #BS + #BC + #SS + #SC + RESULT + LB1 20636.32 + LB2 15855.67 + LB3 21801.36 + LB4 18362.33 + LS1 17287 + LS2 14855.67 + LS3 15282.31 + LS4 9737.98 + REND + """.trimIndent() + + // Act + val result = hemoCubeFragment.extractV1HardwareId(input) + + // Assert + assertEquals("HCV-000-3001", result) + } + + @Test + fun `extractV2HardwareId should return the correct hardware ID when it exists in the input`() { + // Arrange + val input = "SNS ABC123 SNE" + + // Act + val result = hemoCubeFragment.extractV2HardwareId(input) + + // Assert + assertEquals("ABC123", result) + } + + @Test + fun `extractV2HardwareId should return null when no hardware ID is found in the input`() { + // Arrange + val input = "No hardware ID in this input" + + // Act + val result = hemoCubeFragment.extractV2HardwareId(input) + + // Assert + assertNull(result) + } + + @Test + fun `extractV2HardwareId should handle whitespace around the hardware ID`() { + // Arrange + val input = "SNS XYZ789 SNE" + + // Act + val result = hemoCubeFragment.extractV2HardwareId(input) + + // Assert + assertEquals("XYZ789", result) + } + + @Test + fun `extractV2HardwareId should handle provided input string with HCV-000-3013`() { + // Arrange + val input = "SNS HCV-000-3013 SNE\n" + + "#SS1\n" + + "#SC1\n" + + "RESULT \n" + + "LB1 23411.00\n" + + "LB2 21417.00\n" + + "LB3 23869.00\n" + + "LB4 24967.00\n" + + "LS1 3401.00\n" + + "LS2 1107.00\n" + + "LS3 14410.00\n" + + "LS4 15047.00\n" + + "REND\n" + + // Act + val result = hemoCubeFragment.extractV2HardwareId(input) + + // Assert + assertEquals("HCV-000-3013", result) + } + + @Test + fun `extractV2HardwareId should handle provided input string with HPP1-4001`() { + // Arrange + val input = "SNS HPP1-4001 SNE#SS1\n" + + "#SC1\n" + + "RESULT\n" + + "LB1 23777\n" + + "LB2 24130\n" + + "LB3 23442\n" + + "LB4 23945\n" + + "LS1 2521\n" + + "LS2 973\n" + + "LS3 10252\n" + + "LS4 11017\n" + + "REND\n" + + // Act + val result = hemoCubeFragment.extractV2HardwareId(input) + + // Assert + assertEquals("HPP1-4001", result) + } + + @Test + fun `extractV2HardwareId should handle provided input string with HPP1-000-4001`() { + // Arrange + val input = "SNS HPP1-000-4001 SNE#SS1\n" + + "#SC1\n" + + "RESULT\n" + + "LB1 23777\n" + + "LB2 24130\n" + + "LB3 23442\n" + + "LB4 23945\n" + + "LS1 2521\n" + + "LS2 973\n" + + "LS3 10252\n" + + "LS4 11017\n" + + "REND\n" + + // Act + val result = hemoCubeFragment.extractV2HardwareId(input) + + // Assert + assertEquals("HPP1-000-4001", result) + } } \ No newline at end of file