/* * * Copyright 2018 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package binarylog import ( "reflect" "testing" ) func TestLongMethodConfigRegexp(t *testing.T) { testCases := []struct { in string out []string }{ {in: "", out: nil}, {in: "*/m", out: nil}, { in: "p.s/m{}", out: []string{"p.s/m{}", "p.s", "m", "{}"}, }, { in: "p.s/m", out: []string{"p.s/m", "p.s", "m", ""}, }, { in: "p.s/m{h}", out: []string{"p.s/m{h}", "p.s", "m", "{h}"}, }, { in: "p.s/m{m}", out: []string{"p.s/m{m}", "p.s", "m", "{m}"}, }, { in: "p.s/m{h:123}", out: []string{"p.s/m{h:123}", "p.s", "m", "{h:123}"}, }, { in: "p.s/m{m:123}", out: []string{"p.s/m{m:123}", "p.s", "m", "{m:123}"}, }, { in: "p.s/m{h:123,m:123}", out: []string{"p.s/m{h:123,m:123}", "p.s", "m", "{h:123,m:123}"}, }, { in: "p.s/*", out: []string{"p.s/*", "p.s", "*", ""}, }, { in: "p.s/*{h}", out: []string{"p.s/*{h}", "p.s", "*", "{h}"}, }, { in: "s/m*", out: []string{"s/m*", "s", "m", "*"}, }, { in: "s/**", out: []string{"s/**", "s", "*", "*"}, }, } for _, tc := range testCases { match := longMethodConfigRegexp.FindStringSubmatch(tc.in) if !reflect.DeepEqual(match, tc.out) { t.Errorf("in: %q, out: %q, want: %q", tc.in, match, tc.out) } } } func TestHeaderConfigRegexp(t *testing.T) { testCases := []struct { in string out []string }{ {in: "{}", out: nil}, {in: "{a:b}", out: nil}, {in: "{m:123}", out: nil}, {in: "{h:123;m:123}", out: nil}, { in: "{h}", out: []string{"{h}", ""}, }, { in: "{h:123}", out: []string{"{h:123}", "123"}, }, } for _, tc := range testCases { match := headerConfigRegexp.FindStringSubmatch(tc.in) if !reflect.DeepEqual(match, tc.out) { t.Errorf("in: %q, out: %q, want: %q", tc.in, match, tc.out) } } } func TestMessageConfigRegexp(t *testing.T) { testCases := []struct { in string out []string }{ {in: "{}", out: nil}, {in: "{a:b}", out: nil}, {in: "{h:123}", out: nil}, {in: "{h:123;m:123}", out: nil}, { in: "{m}", out: []string{"{m}", ""}, }, { in: "{m:123}", out: []string{"{m:123}", "123"}, }, } for _, tc := range testCases { match := messageConfigRegexp.FindStringSubmatch(tc.in) if !reflect.DeepEqual(match, tc.out) { t.Errorf("in: %q, out: %q, want: %q", tc.in, match, tc.out) } } } func TestHeaderMessageConfigRegexp(t *testing.T) { testCases := []struct { in string out []string }{ {in: "{}", out: nil}, {in: "{a:b}", out: nil}, {in: "{h}", out: nil}, {in: "{h:123}", out: nil}, {in: "{m}", out: nil}, {in: "{m:123}", out: nil}, { in: "{h;m}", out: []string{"{h;m}", "", ""}, }, { in: "{h:123;m}", out: []string{"{h:123;m}", "123", ""}, }, { in: "{h;m:123}", out: []string{"{h;m:123}", "", "123"}, }, { in: "{h:123;m:123}", out: []string{"{h:123;m:123}", "123", "123"}, }, } for _, tc := range testCases { match := headerMessageConfigRegexp.FindStringSubmatch(tc.in) if !reflect.DeepEqual(match, tc.out) { t.Errorf("in: %q, out: %q, want: %q", tc.in, match, tc.out) } } }