package message import ( "testing" ) func TestThreadSubject(t *testing.T) { check := func(s, expBase string, expResp bool) { t.Helper() base, isResp := ThreadSubject(s, false) if base != expBase || isResp != expResp { t.Fatalf("got base %q, resp %v, expected %q %v for subject %q", base, isResp, expBase, expResp, s) } } check("test", "test", false) check(" a b\tc\r\n d\t", "a b c d", false) check("test (fwd) (fwd) ", "test", true) check("re: test", "test", true) check("fw: test", "test", true) check("fwd: test", "test", true) check("fwd [tag] Test", "fwd [tag] test", false) check("[list] re: a b c\t", "a b c", true) check("[list] fw: a b c", "a b c", true) check("[tag1][tag2] [tag3]\t re: a b c", "a b c", true) check("[tag1][tag2] [tag3]\t re: a \u0000b c", "", true) check("[list] fw:[tag] a b c", "a b c", true) check("[list] re: [list] fwd: a b c\t", "a b c", true) check("[fwd: a b c]", "a b c", true) check("[fwd: [fwd: a b c]]", "a b c", true) check("[fwd: [list] re: a b c]", "a b c", true) check("[nonlist]", "[nonlist]", false) check("fwd [list]:", "", true) }