From ed274ec665ee09afd976a76540f7e98a75cf5b9a Mon Sep 17 00:00:00 2001 From: Jguer Date: Sat, 5 Oct 2019 19:42:47 +0100 Subject: [PATCH] Improve testing of Intranges --- pkg/types/intrange.go | 25 ----------- pkg/types/intrange_test.go | 91 +++++++++++++++++++++++++++++++++++++- 2 files changed, 90 insertions(+), 26 deletions(-) diff --git a/pkg/types/intrange.go b/pkg/types/intrange.go index dcf7fe56..4e27ee09 100644 --- a/pkg/types/intrange.go +++ b/pkg/types/intrange.go @@ -56,31 +56,6 @@ func Max(a, b int) int { return a } -func intRangesEqual(a, b IntRanges) bool { - if a == nil && b == nil { - return true - } - - if a == nil || b == nil { - return false - } - - if len(a) != len(b) { - return false - } - - for n := range a { - r1 := a[n] - r2 := b[n] - - if r1.min != r2.min || r1.max != r2.max { - return false - } - } - - return true -} - // ParseNumberMenu parses input for number menus split by spaces or commas //supports individual selection: 1 2 3 4 //supports range selections: 1-4 10-20 diff --git a/pkg/types/intrange_test.go b/pkg/types/intrange_test.go index d2085b77..757dd4e8 100644 --- a/pkg/types/intrange_test.go +++ b/pkg/types/intrange_test.go @@ -1,6 +1,8 @@ package types -import "testing" +import ( + "testing" +) func TestParseNumberMenu(t *testing.T) { type result struct { @@ -54,3 +56,90 @@ func TestParseNumberMenu(t *testing.T) { } } } + +func TestIntRange_Get(t *testing.T) { + type fields struct { + min int + max int + } + type args struct { + n int + } + tests := []struct { + name string + fields fields + args args + want bool + }{ + {name: "normal range true", fields: fields{0, 10}, args: args{5}, want: true}, + {name: "normal start range true", fields: fields{0, 10}, args: args{0}, want: true}, + {name: "normal end range true", fields: fields{0, 10}, args: args{10}, want: true}, + {name: "small range true", fields: fields{1, 1}, args: args{1}, want: true}, + {name: "normal start range false", fields: fields{1, 2}, args: args{0}, want: false}, + {name: "normal end range false", fields: fields{1, 2}, args: args{3}, want: false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r := IntRange{ + min: tt.fields.min, + max: tt.fields.max, + } + if got := r.Get(tt.args.n); got != tt.want { + t.Errorf("IntRange.Get() = %v, want %v", got, tt.want) + } + }) + } +} + +func intRangesEqual(a, b IntRanges) bool { + if a == nil && b == nil { + return true + } + + if a == nil || b == nil { + return false + } + + if len(a) != len(b) { + return false + } + + for n := range a { + r1 := a[n] + r2 := b[n] + + if r1.min != r2.min || r1.max != r2.max { + return false + } + } + + return true +} + +func TestIntRanges_Get(t *testing.T) { + type args struct { + n int + } + tests := []struct { + name string + rs IntRanges + args args + want bool + }{ + {name: "normal range true", rs: IntRanges{{0, 10}}, args: args{5}, want: true}, + {name: "normal ranges inbetween true", rs: IntRanges{{0, 4}, {5, 10}}, args: args{5}, want: true}, + {name: "normal ranges inbetween false", rs: IntRanges{{0, 4}, {6, 10}}, args: args{5}, want: false}, + {name: "normal start range true", rs: IntRanges{{0, 10}}, args: args{0}, want: true}, + {name: "normal end range true", rs: IntRanges{{0, 10}}, args: args{10}, want: true}, + {name: "small range true", rs: IntRanges{{1, 1}, {3, 3}}, args: args{1}, want: true}, + {name: "normal start range false", rs: IntRanges{{1, 2}}, args: args{0}, want: false}, + {name: "normal end range false", rs: IntRanges{{1, 2}}, args: args{3}, want: false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.rs.Get(tt.args.n); got != tt.want { + t.Errorf("IntRanges.Get() = %v, want %v", got, tt.want) + } + }) + } +}