52 lines
2.6 KiB
Go
52 lines
2.6 KiB
Go
package imapserver_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/emersion/go-imap/v2/imapserver"
|
|
)
|
|
|
|
var matchListTests = []struct {
|
|
name, ref, pattern string
|
|
result bool
|
|
}{
|
|
{name: "INBOX", pattern: "INBOX", result: true},
|
|
{name: "INBOX", pattern: "Asuka", result: false},
|
|
{name: "INBOX", pattern: "*", result: true},
|
|
{name: "INBOX", pattern: "%", result: true},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "*", result: true},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "%", result: false},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "Neon Genesis Evangelion/*", result: true},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "Neon Genesis Evangelion/%", result: true},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "Neo* Evangelion/Misato", result: true},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "Neo% Evangelion/Misato", result: true},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "*Eva*/Misato", result: true},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "%Eva%/Misato", result: true},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "*X*/Misato", result: false},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "%X%/Misato", result: false},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "Neon Genesis Evangelion/Mi%o", result: true},
|
|
{name: "Neon Genesis Evangelion/Misato", pattern: "Neon Genesis Evangelion/Mi%too", result: false},
|
|
{name: "Misato/Misato", pattern: "Mis*to/Misato", result: true},
|
|
{name: "Misato/Misato", pattern: "Mis*to", result: true},
|
|
{name: "Misato/Misato/Misato", pattern: "Mis*to/Mis%to", result: true},
|
|
{name: "Misato/Misato", pattern: "Mis**to/Misato", result: true},
|
|
{name: "Misato/Misato", pattern: "Misat%/Misato", result: true},
|
|
{name: "Misato/Misato", pattern: "Misat%Misato", result: false},
|
|
{name: "Misato/Misato", ref: "Misato", pattern: "Misato", result: true},
|
|
{name: "Misato/Misato", ref: "Misato/", pattern: "Misato", result: true},
|
|
{name: "Misato/Misato", ref: "Shinji", pattern: "/Misato/*", result: true},
|
|
{name: "Misato/Misato", ref: "Misato", pattern: "/Misato", result: false},
|
|
{name: "Misato/Misato", ref: "Misato", pattern: "Shinji", result: false},
|
|
{name: "Misato/Misato", ref: "Shinji", pattern: "Misato", result: false},
|
|
}
|
|
|
|
func TestMatchList(t *testing.T) {
|
|
delim := '/'
|
|
for _, test := range matchListTests {
|
|
result := imapserver.MatchList(test.name, delim, test.ref, test.pattern)
|
|
if result != test.result {
|
|
t.Errorf("matching name %q with pattern %q and reference %q returns %v, but expected %v", test.name, test.pattern, test.ref, result, test.result)
|
|
}
|
|
}
|
|
}
|