gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/registry/encoding_test.go (about)

     1  package registry
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestEncoding(t *testing.T) {
     8  	testData := []*mdnsTxt{
     9  		{
    10  			Version: "1.0.0",
    11  			Metadata: map[string]string{
    12  				"foo": "bar",
    13  			},
    14  			Endpoints: []*Endpoint{
    15  				{
    16  					Name: "endpoint1",
    17  					Request: &Value{
    18  						Name: "request",
    19  						Type: "request",
    20  					},
    21  					Response: &Value{
    22  						Name: "response",
    23  						Type: "response",
    24  					},
    25  					Metadata: map[string]string{
    26  						"foo1": "bar1",
    27  					},
    28  				},
    29  			},
    30  		},
    31  	}
    32  
    33  	for _, d := range testData {
    34  		encoded, err := encode(d)
    35  		if err != nil {
    36  			t.Fatal(err)
    37  		}
    38  
    39  		for _, txt := range encoded {
    40  			if len(txt) > 255 {
    41  				t.Fatalf("One of parts for txt is %d characters", len(txt))
    42  			}
    43  		}
    44  
    45  		decoded, err := decode(encoded)
    46  		if err != nil {
    47  			t.Fatal(err)
    48  		}
    49  
    50  		if decoded.Version != d.Version {
    51  			t.Fatalf("Expected version %s got %s", d.Version, decoded.Version)
    52  		}
    53  
    54  		if len(decoded.Endpoints) != len(d.Endpoints) {
    55  			t.Fatalf("Expected %d endpoints, got %d", len(d.Endpoints), len(decoded.Endpoints))
    56  		}
    57  
    58  		for k, v := range d.Metadata {
    59  			if val := decoded.Metadata[k]; val != v {
    60  				t.Fatalf("Expected %s=%s got %s=%s", k, v, k, val)
    61  			}
    62  		}
    63  	}
    64  
    65  }