From d59fb7b944727bdf3894d9cf3f3c3af22b8aa666 Mon Sep 17 00:00:00 2001 From: Aneurin Barker Snook Date: Mon, 16 Oct 2023 17:43:05 +0100 Subject: [PATCH] fix size validation error again, add tests --- size.go | 2 +- size_test.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 size_test.go diff --git a/size.go b/size.go index 08341ea..39abb95 100644 --- a/size.go +++ b/size.go @@ -24,7 +24,7 @@ func MaxSize[T any](l int) func([]T) error { func MinSize[T any](l int) func([]T) error { return func(value []T) error { if len(value) < l { - return ErrTooFewChars + return ErrTooFewItems } return nil } diff --git a/size_test.go b/size_test.go new file mode 100644 index 0000000..98467ba --- /dev/null +++ b/size_test.go @@ -0,0 +1,53 @@ +package validate + +import "testing" + +func TestMaxSize(t *testing.T) { + type TestCase struct { + Input []int + L int + Err error + } + + testCases := []TestCase{ + {Input: []int{1, 2, 3, 4}, L: 8}, + {Input: []int{1, 2, 3, 4, 5, 6, 7, 8}, L: 8}, + {Input: []int{1, 2, 3, 4, 5, 6, 7, 8, 9}, L: 8, Err: ErrTooManyItems}, + } + + for n, tc := range testCases { + t.Logf("(%d) Testing %q against maximum length of %d", n, tc.Input, tc.L) + + f := MaxSize[int](tc.L) + err := f(tc.Input) + + if err != tc.Err { + t.Errorf("Expected error %v, got %v", tc.Err, err) + } + } +} + +func TestMinSize(t *testing.T) { + type TestCase struct { + Input []int + L int + Err error + } + + testCases := []TestCase{ + {Input: []int{1, 2, 3, 4}, L: 8, Err: ErrTooFewItems}, + {Input: []int{1, 2, 3, 4, 5, 6, 7, 8}, L: 8}, + {Input: []int{1, 2, 3, 4, 5, 6, 7, 8, 9}, L: 8}, + } + + for n, tc := range testCases { + t.Logf("(%d) Testing %q against minimum length of %d", n, tc.Input, tc.L) + + f := MinSize[int](tc.L) + err := f(tc.Input) + + if err != tc.Err { + t.Errorf("Expected error %v, got %v", tc.Err, err) + } + } +}