mirror of
https://github.com/idanoo/autobrr
synced 2025-07-22 16:29:12 +00:00
126 lines
3.3 KiB
Go
126 lines
3.3 KiB
Go
// Copyright (c) 2021-2025, Ludvig Lundgren and the autobrr contributors.
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
package sanitize
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestStringAndFilterString(t *testing.T) {
|
|
t.Parallel()
|
|
tests := []struct {
|
|
name string
|
|
input string
|
|
expectedString string
|
|
expectedFilter string
|
|
}{
|
|
{
|
|
name: "No Whitespace",
|
|
input: "Hello",
|
|
expectedString: "Hello",
|
|
expectedFilter: "Hello",
|
|
},
|
|
{
|
|
name: "Leading and Trailing Spaces",
|
|
input: " Hello World ",
|
|
expectedString: "Hello World",
|
|
expectedFilter: "Hello World",
|
|
},
|
|
{
|
|
name: "Multiple Words with Tabs",
|
|
input: "Hello\tWorld",
|
|
expectedString: "Hello\tWorld",
|
|
expectedFilter: "Hello World",
|
|
},
|
|
{
|
|
name: "Comma Separation",
|
|
input: "Hello,World",
|
|
expectedString: "Hello,World",
|
|
expectedFilter: "Hello,World",
|
|
},
|
|
{
|
|
name: "Newlines and Special Characters",
|
|
input: "Hello\nWorld\r\nTest",
|
|
expectedString: "Hello\nWorld\r\nTest",
|
|
expectedFilter: "Hello,World,Test",
|
|
},
|
|
{
|
|
name: "Empty String",
|
|
input: "",
|
|
expectedString: "",
|
|
expectedFilter: "",
|
|
},
|
|
{
|
|
name: "Whitespace Only",
|
|
input: " ",
|
|
expectedString: "",
|
|
expectedFilter: "",
|
|
},
|
|
{
|
|
name: "Form Feeds and Vertical Tabs",
|
|
input: "Hello\fWorld\vTest",
|
|
expectedString: "Hello\fWorld\vTest",
|
|
expectedFilter: "HelloWorld,Test",
|
|
},
|
|
{
|
|
name: "Multiple Special Characters",
|
|
input: "Test,\nWorld\tForm\fFeed\vVertical",
|
|
expectedString: "Test,\nWorld\tForm\fFeed\vVertical",
|
|
expectedFilter: "Test,World FormFeed,Vertical",
|
|
},
|
|
{
|
|
name: "Whitespace with Newlines and Tabs",
|
|
input: " \n\t Test \n World \t ",
|
|
expectedString: "Test \n World",
|
|
expectedFilter: "Test,World",
|
|
},
|
|
{
|
|
name: "Combination of Special Characters",
|
|
input: "\t\n\fTest\v,World\n",
|
|
expectedString: "Test\v,World",
|
|
expectedFilter: "Test,World",
|
|
},
|
|
{
|
|
name: "Special Characters Only",
|
|
input: "\r\n\t\f\v",
|
|
expectedString: "",
|
|
expectedFilter: "",
|
|
},
|
|
{
|
|
name: "No Interesting Characters",
|
|
input: ",\n,\r,\t,\f,\v,",
|
|
expectedString: ",\n,\r,\t,\f,\v,",
|
|
expectedFilter: "",
|
|
},
|
|
{
|
|
name: "Complex String with Symbols",
|
|
input: "Hello @ World!",
|
|
expectedString: "Hello @ World!",
|
|
expectedFilter: "Hello @ World!",
|
|
},
|
|
{
|
|
name: "Whitespace Between Words",
|
|
input: "Hello World",
|
|
expectedString: "Hello World",
|
|
expectedFilter: "Hello World",
|
|
},
|
|
{
|
|
name: "To the Moon Commas",
|
|
input: "Hello,,,,,World",
|
|
expectedString: "Hello,,,,,World",
|
|
expectedFilter: "Hello,World",
|
|
},
|
|
}
|
|
|
|
for i, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := String(tt.input); got != tt.expectedString {
|
|
t.Errorf("%d String() = %q, want %q", i, got, tt.expectedString)
|
|
}
|
|
if got := FilterString(tt.input); got != tt.expectedFilter {
|
|
t.Errorf("%d FilterString() = %q, want %q", i, got, tt.expectedFilter)
|
|
}
|
|
})
|
|
}
|
|
}
|