// Copyright 2016 Google Inc. All Rights Reserved. // // 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 profile import ( "testing" ) func TestSampleIndexByName(t *testing.T) { for _, c := range []struct { desc string sampleTypes []string defaultSampleType string index string want int wantError bool }{ { desc: "use last by default", index: "", want: 1, sampleTypes: []string{"zero", "default"}, }, { desc: "honour specified default", index: "", want: 1, defaultSampleType: "default", sampleTypes: []string{"zero", "default", "two"}, }, { desc: "invalid default is ignored", index: "", want: 2, defaultSampleType: "non-existent", sampleTypes: []string{"zero", "one", "default"}, }, { desc: "index by int", index: "0", want: 0, sampleTypes: []string{"zero", "one", "two"}, }, { desc: "index by int ignores default", index: "0", want: 0, defaultSampleType: "default", sampleTypes: []string{"zero", "default", "two"}, }, { desc: "index by name", index: "two", want: 2, sampleTypes: []string{"zero", "one", "two", "three"}, }, { desc: "index by name ignores default", index: "zero", want: 0, defaultSampleType: "default", sampleTypes: []string{"zero", "default", "two"}, }, { desc: "out of bound int causes error", index: "100", wantError: true, sampleTypes: []string{"zero", "default"}, }, { desc: "unknown name causes error", index: "does not exist", wantError: true, sampleTypes: []string{"zero", "default"}, }, { desc: "'inused_{x}' recognized for legacy '{x}'", index: "inuse_zero", want: 0, sampleTypes: []string{"zero", "default"}, }, } { p := &Profile{ DefaultSampleType: c.defaultSampleType, SampleType: []*ValueType{}, } for _, st := range c.sampleTypes { p.SampleType = append(p.SampleType, &ValueType{Type: st, Unit: "milliseconds"}) } got, err := p.SampleIndexByName(c.index) switch { case c.wantError && err == nil: t.Errorf("%s: error should have been returned not index=%d, err=%v", c.desc, got, err) case !c.wantError && err != nil: t.Errorf("%s: unexpected got index=%d, err=%v; wanted index=%d, err=nil", c.desc, got, err, c.want) case !c.wantError && got != c.want: t.Errorf("%s: got index=%d, want index=%d", c.desc, got, c.want) } } }