/* * ============================================================================ * 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, ) } }