test(data): Add Kotest property-based tests for PacketHandler

This commit is contained in:
James Rich 2026-03-18 20:20:40 -05:00
parent 438d018260
commit 7d56c3fefd
2 changed files with 22 additions and 2 deletions

View file

@ -71,6 +71,8 @@ kotlin {
commonTest.dependencies {
implementation(kotlin("test"))
implementation(libs.kotlinx.coroutines.test)
implementation(libs.kotest.assertions)
implementation(libs.kotest.property)
}
}
}

View file

@ -22,6 +22,9 @@ import dev.mokkery.every
import dev.mokkery.matcher.any
import dev.mokkery.mock
import dev.mokkery.verifySuspend
import io.kotest.property.Arb
import io.kotest.property.arbitrary.int
import io.kotest.property.checkAll
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@ -39,6 +42,7 @@ import org.meshtastic.proto.QueueStatus
import org.meshtastic.proto.ToRadio
import kotlin.test.BeforeTest
import kotlin.test.Test
import kotlin.test.assertNotNull
class PacketHandlerImplTest {
@ -70,13 +74,16 @@ class PacketHandlerImplTest {
handler.start(testScope)
}
@Test
fun testInitialization() {
assertNotNull(handler)
}
@Test
fun `sendToRadio with ToRadio sends immediately`() {
val toRadio = ToRadio(packet = MeshPacket(id = 123))
handler.sendToRadio(toRadio)
// No explicit assertion here in original test, but we could verify call
}
@Test
@ -107,6 +114,17 @@ class PacketHandlerImplTest {
testScheduler.runCurrent()
}
@Test
fun `handleQueueStatus property test`() = runTest(testDispatcher) {
checkAll(Arb.int(0, 10), Arb.int(0, 32), Arb.int(0, 100000)) { res, free, packetId ->
val status = QueueStatus(res = res, free = free, mesh_packet_id = packetId)
// Ensure it doesn't crash on any input
handler.handleQueueStatus(status)
testScheduler.runCurrent()
}
}
@Test
fun `outgoing packets are logged with NODE_NUM_LOCAL`() = runTest(testDispatcher) {
val packet = MeshPacket(id = 123, decoded = Data(portnum = PortNum.TEXT_MESSAGE_APP))