| // 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) | |
| } | |
| } | |
| } |