tauri-plugin-serialplugin 2.22.0

Access the current process of your Tauri application.
package app.tauri.serialplugin.manager

import org.junit.Assert.assertArrayEquals
import org.junit.Assert.assertEquals
import org.junit.Test

class SerialByteAccumulatorTest {
    @Test
    fun append_empty_is_noop() {
        val acc = SerialByteAccumulator()
        acc.append(ByteArray(0))
        assertEquals(0, acc.pendingByteCount())
        assertArrayEquals(ByteArray(0), acc.drain())
    }

    @Test
    fun append_then_drain_preserves_order() {
        val acc = SerialByteAccumulator()
        acc.append(byteArrayOf(1, 2))
        acc.append(byteArrayOf(3))
        assertEquals(3, acc.pendingByteCount())
        assertArrayEquals(byteArrayOf(1, 2, 3), acc.drain())
        assertEquals(0, acc.pendingByteCount())
        assertArrayEquals(ByteArray(0), acc.drain())
    }

    @Test
    fun drain_when_empty_returns_empty() {
        val acc = SerialByteAccumulator()
        assertArrayEquals(ByteArray(0), acc.drain())
    }

    @Test
    fun concurrent_appends_merge_consistently() {
        val acc = SerialByteAccumulator()
        val threads = List(8) { i ->
            Thread {
                repeat(100) {
                    acc.append(byteArrayOf(i.toByte()))
                }
            }
        }
        threads.forEach { it.start() }
        threads.forEach { it.join() }
        val out = acc.drain()
        assertEquals(800, out.size)
        // All bytes are in 0..7 — count occurrences
        val counts = IntArray(8)
        for (b in out) {
            counts[b.toInt() and 0xff]++
        }
        for (i in 0 until 8) {
            assertEquals(100, counts[i])
        }
    }
}