@@ -89,12 +89,17 @@ type MockBoardServer struct {
8989
9090func NewMockBoardServer (address string ) * MockBoardServer {
9191 logger := zerolog .Nop ()
92+
93+ enc := presentation .NewEncoder (binary .BigEndian , logger )
94+ dec := presentation .NewDecoder (binary .BigEndian , logger )
95+ wireTestPacketCodec (enc , dec , abstraction .PacketId (100 ))
96+
9297 return & MockBoardServer {
9398 address : address ,
9499 connections : make ([]net.Conn , 0 ),
95100 packetsRecv : make ([]abstraction.Packet , 0 ),
96- encoder : presentation . NewEncoder ( binary . BigEndian , logger ) ,
97- decoder : presentation . NewDecoder ( binary . BigEndian , logger ) ,
101+ encoder : enc ,
102+ decoder : dec ,
98103 }
99104}
100105
@@ -224,9 +229,14 @@ func (s *MockBoardServer) GetConnectionCount() int {
224229func createTestTransport (t * testing.T ) (* Transport , * TestTransportAPI ) {
225230 logger := zerolog .New (zerolog .NewTestWriter (t )).With ().Timestamp ().Logger ()
226231
232+ enc := presentation .NewEncoder (binary .BigEndian , logger )
233+ dec := presentation .NewDecoder (binary .BigEndian , logger )
234+ wireTestPacketCodec (enc , dec , abstraction .PacketId (100 ))
235+
236+
227237 transport := NewTransport (logger ).
228- WithEncoder (presentation . NewEncoder ( binary . BigEndian , logger ) ).
229- WithDecoder (presentation . NewDecoder ( binary . BigEndian , logger ) )
238+ WithEncoder (enc ).
239+ WithDecoder (dec )
230240
231241 api := NewTestTransportAPI ()
232242 transport .SetAPI (api )
@@ -255,6 +265,20 @@ func waitForCondition(condition func() bool, timeout time.Duration, message stri
255265 return fmt .Errorf ("timeout waiting for condition: %s" , message )
256266}
257267
268+ // test wiring: register a trivial codec for a data packet id.
269+ func wireTestPacketCodec (enc * presentation.Encoder , dec * presentation.Decoder , id abstraction.PacketId ) {
270+ dataEnc := data .NewEncoder (binary .BigEndian )
271+ dataDec := data .NewDecoder (binary .BigEndian )
272+
273+ // Empty descriptor = no payload values, just the id header.
274+ var desc data.Descriptor
275+ dataEnc .SetDescriptor (id , desc )
276+ dataDec .SetDescriptor (id , desc )
277+
278+ enc .SetPacketEncoder (id , dataEnc )
279+ dec .SetPacketDecoder (id , dataDec )
280+ }
281+
258282// Unit Tests
259283func TestTransport_Creation (t * testing.T ) {
260284 logger := zerolog .Nop ()
@@ -307,6 +331,42 @@ func TestTransport_SetTargetIp(t *testing.T) {
307331 }
308332}
309333
334+ func TestTransport_InvalidInputs (t * testing.T ) {
335+ transport , _ := createTestTransport (t )
336+
337+ // Test invalid ID input
338+ err := transport .SetIdTarget (0 , "" )
339+ if err == nil {
340+ t .Errorf ("Expected error for invalid ID input, got nil" )
341+ }
342+
343+ // Test invalid IP input
344+ err = transport .SetTargetIp ("" , "" )
345+ if err == nil {
346+ t .Errorf ("Expected error for invalid IP input, got nil" )
347+ }
348+ }
349+
350+ func TestTransport_RemoveTargets (t * testing.T ) {
351+ transport , _ := createTestTransport (t )
352+
353+ // Add entries
354+ transport .SetIdTarget (100 , "TEST_BOARD" )
355+ transport .SetTargetIp ("192.168.1.100" , "TEST_BOARD" )
356+
357+ // Remove entries
358+ delete (transport .idToTarget , 100 )
359+ delete (transport .ipToTarget , "192.168.1.100" )
360+
361+ // Verify removal
362+ if _ , exists := transport .idToTarget [100 ]; exists {
363+ t .Errorf ("Expected ID 100 to be removed, but it still exists" )
364+ }
365+ if _ , exists := transport .ipToTarget ["192.168.1.100" ]; exists {
366+ t .Errorf ("Expected IP 192.168.1.100 to be removed, but it still exists" )
367+ }
368+ }
369+
310370// Integration Tests
311371func TestTransport_ClientServerConnection (t * testing.T ) {
312372 transport , api := createTestTransport (t )
@@ -437,7 +497,8 @@ func TestTransport_PacketSending(t *testing.T) {
437497
438498 // Wait for connection
439499 err = waitForCondition (func () bool {
440- return mockBoard .GetConnectionCount () > 0
500+ updates := api .GetConnectionUpdates ()
501+ return len (updates ) > 0 && updates [len (updates )- 1 ].Target == target && updates [len (updates )- 1 ].IsConnected
441502 }, 2 * time .Second , "Should establish connection" )
442503 if err != nil {
443504 t .Fatal (err )
0 commit comments