guided scan zone

This commit is contained in:
Hadrian Burkhardt
2026-02-13 03:13:29 +01:00
parent d4539efee6
commit 471270a396
4 changed files with 347 additions and 151 deletions
@@ -50,7 +50,7 @@ class ScannerViewModelTest {
viewModel.onScan(result)
viewModel.resumeScanning()
now = 2_000L
now = 4_000L
viewModel.onScan(result)
advanceUntilIdle()
@@ -75,7 +75,7 @@ class ScannerViewModelTest {
now = 2_000L
viewModel.onScan(ScanResult(content = "B", type = "Text"))
now = 3_000L
now = 3_600L
viewModel.onScan(ScanResult(content = "A", type = "Text"))
advanceUntilIdle()
@@ -92,4 +92,27 @@ class ScannerViewModelTest {
assertTrue(viewModel.uiState.value.batchResults.isEmpty())
assertEquals(3, saved.size)
}
@Test
fun sameCodeWithinHoldoff_isIgnored() = runTest {
val saved = mutableListOf<Pair<String, String>>()
var now = 1_000L
val viewModel = ScannerViewModel(
saveScan = { content, type -> saved += content to type },
nowProvider = { now }
)
val result = ScanResult(content = "HOLD", type = "Text")
viewModel.setBatchMode(true)
viewModel.onScan(result)
now = 2_000L
viewModel.onScan(result)
advanceUntilIdle()
val state = viewModel.uiState.value
assertEquals(1, state.scanFeedbackNonce)
assertEquals(1, saved.size)
assertEquals(1, state.batchResults.size)
}
}