From 6340911d381e81522a3fc9b3e499aa86f121a0b5 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 13 Nov 2023 10:32:26 +0100 Subject: [PATCH] lib/stringsutil: add tests for LimitStringLen() function --- lib/stringsutil/stringsutil.go | 8 ++++---- lib/stringsutil/stringsutil_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 lib/stringsutil/stringsutil_test.go diff --git a/lib/stringsutil/stringsutil.go b/lib/stringsutil/stringsutil.go index 96afb208c5..034612292a 100644 --- a/lib/stringsutil/stringsutil.go +++ b/lib/stringsutil/stringsutil.go @@ -5,12 +5,12 @@ package stringsutil // If len(s) > maxLen, then s is replaced with "s_prefix..s_suffix", // so the total length of the returned string doesn't exceed maxLen. func LimitStringLen(s string, maxLen int) string { - if len(s) <= maxLen || maxLen < 4 { + if maxLen < 4 { + maxLen = 4 + } + if len(s) <= maxLen { return s } n := (maxLen / 2) - 1 - if n < 0 { - n = 0 - } return s[:n] + ".." + s[len(s)-n:] } diff --git a/lib/stringsutil/stringsutil_test.go b/lib/stringsutil/stringsutil_test.go new file mode 100644 index 0000000000..bda93fe4f1 --- /dev/null +++ b/lib/stringsutil/stringsutil_test.go @@ -0,0 +1,24 @@ +package stringsutil + +import ( + "testing" +) + +func TestLimitStringLen(t *testing.T) { + f := func(s string, maxLen int, resultExpected string) { + t.Helper() + + result := LimitStringLen(s, maxLen) + if result != resultExpected { + t.Fatalf("unexpected result; got %q; want %q", result, resultExpected) + } + } + + f("", 1, "") + f("a", 10, "a") + f("abc", 2, "abc") + f("abcd", 3, "abcd") + f("abcde", 3, "a..e") + f("abcde", 4, "a..e") + f("abcde", 5, "abcde") +}