package util import "testing" // Written as a code point so that it is visible in the source rather than // looking like an ordinary space. const nonBreakingSpace = string(rune(0x00a0)) func TestCollapseWhitespace(t *testing.T) { tests := []struct { name string input string expected string }{ {"nothing to change", "one two", "one two"}, {"leading and trailing spaces", " one two ", "one two"}, {"run in the middle", "one two", "one two"}, {"tabs and newlines", "one\t\ttwo\nthree", "one two three"}, {"windows line endings", "one\r\ntwo", "one two"}, {"non-breaking space", "one" + nonBreakingSpace + "two", "one two"}, {"mixed whitespace run", "one \t" + nonBreakingSpace + " two", "one two"}, {"only whitespace", " \t\n ", ""}, {"empty string", "", ""}, {"single word with padding", "\tword\n", "word"}, {"paragraph becomes one line", "first line\n\nsecond line\n", "first line second line"}, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { got := CollapseWhitespace(test.input) if got != test.expected { t.Errorf("expected %q got %q", test.expected, got) } }) } }