encoding_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. *
  3. * Copyright 2023 gRPC authors.
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. *
  17. */
  18. package encoding
  19. import (
  20. "testing"
  21. "github.com/google/go-cmp/cmp"
  22. "google.golang.org/grpc/internal/grpcutil"
  23. )
  24. type mockNamedCompressor struct {
  25. Compressor
  26. }
  27. func (mockNamedCompressor) Name() string {
  28. return "mock-compressor"
  29. }
  30. func TestDuplicateCompressorRegister(t *testing.T) {
  31. defer func(m map[string]Compressor) { registeredCompressor = m }(registeredCompressor)
  32. defer func(c []string) { grpcutil.RegisteredCompressorNames = c }(grpcutil.RegisteredCompressorNames)
  33. registeredCompressor = map[string]Compressor{}
  34. grpcutil.RegisteredCompressorNames = []string{}
  35. RegisterCompressor(&mockNamedCompressor{})
  36. // Register another instance of the same compressor.
  37. mc := &mockNamedCompressor{}
  38. RegisterCompressor(mc)
  39. if got := registeredCompressor["mock-compressor"]; got != mc {
  40. t.Fatalf("Unexpected compressor, got: %+v, want:%+v", got, mc)
  41. }
  42. wantNames := []string{"mock-compressor"}
  43. if !cmp.Equal(wantNames, grpcutil.RegisteredCompressorNames) {
  44. t.Fatalf("Unexpected compressor names, got: %+v, want:%+v", grpcutil.RegisteredCompressorNames, wantNames)
  45. }
  46. }