init: pristine aerc 0.20.0 source
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFolderMap_Apply(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
mapping map[string]string
|
||||
order []string
|
||||
input []string
|
||||
want []string
|
||||
}{
|
||||
{
|
||||
name: "strict single folder mapping",
|
||||
mapping: map[string]string{"Drafts": "INBOX/Drafts"},
|
||||
order: []string{"Drafts"},
|
||||
input: []string{"INBOX/Drafts"},
|
||||
want: []string{"Drafts"},
|
||||
},
|
||||
{
|
||||
name: "prefix mapping with * suffix",
|
||||
mapping: map[string]string{"Prefix/": "INBOX/*"},
|
||||
order: []string{"Prefix/"},
|
||||
input: []string{"INBOX", "INBOX/Test1", "INBOX/Test2", "Archive"},
|
||||
want: []string{"INBOX", "Prefix/Test1", "Prefix/Test2", "Archive"},
|
||||
},
|
||||
{
|
||||
name: "remove prefix with * in key",
|
||||
mapping: map[string]string{"*": "INBOX/*"},
|
||||
order: []string{"*"},
|
||||
input: []string{"INBOX", "INBOX/Test1", "INBOX/Test2", "Archive"},
|
||||
want: []string{"INBOX", "Test1", "Test2", "Archive"},
|
||||
},
|
||||
{
|
||||
name: "remove two prefixes with * in keys",
|
||||
mapping: map[string]string{
|
||||
"*": "INBOX/*",
|
||||
"**": "PROJECT/*",
|
||||
},
|
||||
order: []string{"*", "**"},
|
||||
input: []string{"INBOX", "INBOX/Test1", "INBOX/Test2", "Archive", "PROJECT/sub1", "PROJECT/sub2"},
|
||||
want: []string{"INBOX", "Test1", "Test2", "Archive", "sub1", "sub2"},
|
||||
},
|
||||
{
|
||||
name: "multiple, sequential mappings",
|
||||
mapping: map[string]string{
|
||||
"Archive/existing": "Archive*",
|
||||
"Archive": "Archivum*",
|
||||
},
|
||||
order: []string{"Archive/existing", "Archive"},
|
||||
input: []string{"Archive", "Archive/sub", "Archivum", "Archivum/year1"},
|
||||
want: []string{"Archive/existing", "Archive/existing/sub", "Archive", "Archive/year1"},
|
||||
},
|
||||
}
|
||||
|
||||
for i, test := range tests {
|
||||
fm := &folderMap{
|
||||
mapping: test.mapping,
|
||||
order: test.order,
|
||||
}
|
||||
var result []string
|
||||
for _, in := range test.input {
|
||||
result = append(result, fm.Apply(in))
|
||||
}
|
||||
if !reflect.DeepEqual(result, test.want) {
|
||||
t.Errorf("test (%d: %s) failed: want '%v' but got '%v'",
|
||||
i, test.name, test.want, result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestFolderMap_createFolder(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
table map[string]string
|
||||
input string
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "create normal folder",
|
||||
table: map[string]string{"Drafts": "INBOX/Drafts"},
|
||||
input: "INBOX/Drafts2",
|
||||
want: "INBOX/Drafts2",
|
||||
},
|
||||
{
|
||||
name: "create mapped folder",
|
||||
table: map[string]string{"Drafts": "INBOX/Drafts"},
|
||||
input: "Drafts/Sub",
|
||||
want: "INBOX/Drafts/Sub",
|
||||
},
|
||||
}
|
||||
|
||||
for i, test := range tests {
|
||||
result := createFolder(test.table, test.input)
|
||||
if result != test.want {
|
||||
t.Errorf("test (%d: %s) failed: want '%v' but got '%v'",
|
||||
i, test.name, test.want, result)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user