MCPcopy Index your code
hub / github.com/coder/coder / TestTruncate

Function TestTruncate

coderd/util/strings/strings_test.go:20–82  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

18}
19
20func TestTruncate(t *testing.T) {
21 t.Parallel()
22
23 for _, tt := range []struct {
24 s string
25 n int
26 expected string
27 options []strings.TruncateOption
28 }{
29 {"foo", 4, "foo", nil},
30 {"foo", 3, "foo", nil},
31 {"foo", 2, "fo", nil},
32 {"foo", 1, "f", nil},
33 {"foo", 0, "", nil},
34 {"foo", -1, "", nil},
35 {"foo bar", 7, "foo bar", []strings.TruncateOption{strings.TruncateWithEllipsis}},
36 {"foo bar", 6, "foo b…", []strings.TruncateOption{strings.TruncateWithEllipsis}},
37 {"foo bar", 5, "foo …", []strings.TruncateOption{strings.TruncateWithEllipsis}},
38 {"foo bar", 4, "foo…", []strings.TruncateOption{strings.TruncateWithEllipsis}},
39 {"foo bar", 3, "fo…", []strings.TruncateOption{strings.TruncateWithEllipsis}},
40 {"foo bar", 2, "f…", []strings.TruncateOption{strings.TruncateWithEllipsis}},
41 {"foo bar", 1, "…", []strings.TruncateOption{strings.TruncateWithEllipsis}},
42 {"foo bar", 0, "", []strings.TruncateOption{strings.TruncateWithEllipsis}},
43 {"foo bar", 7, "foo bar", []strings.TruncateOption{strings.TruncateWithFullWords}},
44 {"foo bar", 6, "foo", []strings.TruncateOption{strings.TruncateWithFullWords}},
45 {"foo bar", 5, "foo", []strings.TruncateOption{strings.TruncateWithFullWords}},
46 {"foo bar", 4, "foo", []strings.TruncateOption{strings.TruncateWithFullWords}},
47 {"foo bar", 3, "foo", []strings.TruncateOption{strings.TruncateWithFullWords}},
48 {"foo bar", 2, "fo", []strings.TruncateOption{strings.TruncateWithFullWords}},
49 {"foo bar", 1, "f", []strings.TruncateOption{strings.TruncateWithFullWords}},
50 {"foo bar", 0, "", []strings.TruncateOption{strings.TruncateWithFullWords}},
51 {"foo bar", 7, "foo bar", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
52 {"foo bar", 6, "foo…", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
53 {"foo bar", 5, "foo…", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
54 {"foo bar", 4, "foo…", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
55 {"foo bar", 3, "fo…", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
56 {"foo bar", 2, "f…", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
57 {"foo bar", 1, "…", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
58 {"foo bar", 0, "", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
59 {"This is a very long task prompt that should be truncated to 160 characters. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 160, "This is a very long task prompt that should be truncated to 160 characters. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor…", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
60 // Multi-byte rune handling.
61 {"日本語テスト", 3, "日本語", nil},
62 {"日本語テスト", 4, "日本語テ", nil},
63 {"日本語テスト", 6, "日本語テスト", nil},
64 {"日本語テスト", 4, "日本語…", []strings.TruncateOption{strings.TruncateWithEllipsis}},
65 {"🎉🎊🎈🎁", 2, "🎉🎊", nil},
66 {"🎉🎊🎈🎁", 3, "🎉🎊…", []strings.TruncateOption{strings.TruncateWithEllipsis}},
67 // Multi-byte with full-word truncation.
68 {"hello 日本語", 7, "hello…", []strings.TruncateOption{strings.TruncateWithFullWords, strings.TruncateWithEllipsis}},
69 {"hello 日本語", 8, "hello 日…", []strings.TruncateOption{strings.TruncateWithEllipsis}},
70 {"日本語 テスト", 4, "日本語", []strings.TruncateOption{strings.TruncateWithFullWords}},
71 } {
72 tName := fmt.Sprintf("%s_%d", tt.s, tt.n)
73 for _, opt := range tt.options {
74 tName += fmt.Sprintf("_%v", opt)
75 }
76 t.Run(tName, func(t *testing.T) {
77 t.Parallel()

Callers

nothing calls this directly

Calls 3

TruncateFunction · 0.92
RunMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected