rs2322tcp/internal/client/virtual_port_validation_test.go

283 lines
4.3 KiB
Go

/*
* ============================================================================
* Projekt.....: rs2322tcp
* Datei.......: internal/client/virtual_port_validation_test.go
* Copyright (C) 2026 Dieter Lang
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Beschreibung:
* Tests für den Vergleich der konfigurierten und tatsächlich vorhandenen
* virtuellen rs2322tcp-Schnittstellen.
* ============================================================================
*/
package client
import (
"reflect"
"testing"
)
func TestCompareVirtualPortsIdentical(t *testing.T) {
configured := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
}
available := []string{
"/dev/ttyUSB101",
"/dev/ttyUSB100",
}
got := compareVirtualPorts(
configured,
available,
)
if len(got.Missing) != 0 {
t.Errorf(
"Missing = %v, want empty",
got.Missing,
)
}
if len(got.Extra) != 0 {
t.Errorf(
"Extra = %v, want empty",
got.Extra,
)
}
}
func TestCompareVirtualPortsMissing(t *testing.T) {
configured := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
"/dev/ttyUSB102",
}
available := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
}
got := compareVirtualPorts(
configured,
available,
)
wantMissing := []string{
"/dev/ttyUSB102",
}
if !reflect.DeepEqual(got.Missing, wantMissing) {
t.Errorf(
"Missing = %v, want %v",
got.Missing,
wantMissing,
)
}
if len(got.Extra) != 0 {
t.Errorf(
"Extra = %v, want empty",
got.Extra,
)
}
}
func TestCompareVirtualPortsExtra(t *testing.T) {
configured := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
}
available := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
"/dev/ttyUSB103",
}
got := compareVirtualPorts(
configured,
available,
)
if len(got.Missing) != 0 {
t.Errorf(
"Missing = %v, want empty",
got.Missing,
)
}
wantExtra := []string{
"/dev/ttyUSB103",
}
if !reflect.DeepEqual(got.Extra, wantExtra) {
t.Errorf(
"Extra = %v, want %v",
got.Extra,
wantExtra,
)
}
}
func TestCompareVirtualPortsMissingAndExtra(t *testing.T) {
configured := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
"/dev/ttyUSB102",
}
available := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
"/dev/ttyUSB103",
}
got := compareVirtualPorts(
configured,
available,
)
wantMissing := []string{
"/dev/ttyUSB102",
}
wantExtra := []string{
"/dev/ttyUSB103",
}
if !reflect.DeepEqual(got.Missing, wantMissing) {
t.Errorf(
"Missing = %v, want %v",
got.Missing,
wantMissing,
)
}
if !reflect.DeepEqual(got.Extra, wantExtra) {
t.Errorf(
"Extra = %v, want %v",
got.Extra,
wantExtra,
)
}
}
func TestCompareVirtualPortsEmpty(t *testing.T) {
got := compareVirtualPorts(
nil,
nil,
)
if len(got.Missing) != 0 {
t.Errorf(
"Missing = %v, want empty",
got.Missing,
)
}
if len(got.Extra) != 0 {
t.Errorf(
"Extra = %v, want empty",
got.Extra,
)
}
}
func TestCompareVirtualPortsConfiguredOnly(t *testing.T) {
configured := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
}
got := compareVirtualPorts(
configured,
nil,
)
wantMissing := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
}
if !reflect.DeepEqual(got.Missing, wantMissing) {
t.Errorf(
"Missing = %v, want %v",
got.Missing,
wantMissing,
)
}
if len(got.Extra) != 0 {
t.Errorf(
"Extra = %v, want empty",
got.Extra,
)
}
}
func TestCompareVirtualPortsAvailableOnly(t *testing.T) {
available := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
}
got := compareVirtualPorts(
nil,
available,
)
if len(got.Missing) != 0 {
t.Errorf(
"Missing = %v, want empty",
got.Missing,
)
}
wantExtra := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB101",
}
if !reflect.DeepEqual(got.Extra, wantExtra) {
t.Errorf(
"Extra = %v, want %v",
got.Extra,
wantExtra,
)
}
}
func TestCompareVirtualPortsIgnoresDuplicates(t *testing.T) {
configured := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB100",
}
available := []string{
"/dev/ttyUSB100",
"/dev/ttyUSB100",
}
got := compareVirtualPorts(
configured,
available,
)
if len(got.Missing) != 0 {
t.Errorf(
"Missing = %v, want empty",
got.Missing,
)
}
if len(got.Extra) != 0 {
t.Errorf(
"Extra = %v, want empty",
got.Extra,
)
}
}