github.com/pion/webrtc/v4@v4.0.1/icecandidateinit_test.go (about)

     1  // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
     2  // SPDX-License-Identifier: MIT
     3  
     4  package webrtc
     5  
     6  import (
     7  	"encoding/json"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestICECandidateInit_Serialization(t *testing.T) {
    14  	tt := []struct {
    15  		candidate  ICECandidateInit
    16  		serialized string
    17  	}{
    18  		{ICECandidateInit{
    19  			Candidate:        "candidate:abc123",
    20  			SDPMid:           refString("0"),
    21  			SDPMLineIndex:    refUint16(0),
    22  			UsernameFragment: refString("def"),
    23  		}, `{"candidate":"candidate:abc123","sdpMid":"0","sdpMLineIndex":0,"usernameFragment":"def"}`},
    24  		{ICECandidateInit{
    25  			Candidate: "candidate:abc123",
    26  		}, `{"candidate":"candidate:abc123","sdpMid":null,"sdpMLineIndex":null,"usernameFragment":null}`},
    27  	}
    28  
    29  	for i, tc := range tt {
    30  		b, err := json.Marshal(tc.candidate)
    31  		if err != nil {
    32  			t.Errorf("Failed to marshal %d: %v", i, err)
    33  		}
    34  		actualSerialized := string(b)
    35  		if actualSerialized != tc.serialized {
    36  			t.Errorf("%d expected %s got %s", i, tc.serialized, actualSerialized)
    37  		}
    38  
    39  		var actual ICECandidateInit
    40  		err = json.Unmarshal(b, &actual)
    41  		if err != nil {
    42  			t.Errorf("Failed to unmarshal %d: %v", i, err)
    43  		}
    44  
    45  		assert.Equal(t, tc.candidate, actual, "should match")
    46  	}
    47  }
    48  
    49  func refString(s string) *string {
    50  	return &s
    51  }
    52  
    53  func refUint16(i uint16) *uint16 {
    54  	return &i
    55  }