87 lines
2.3 KiB
Go
87 lines
2.3 KiB
Go
// Copyright 2011 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package packet
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
var userIdTests = []struct {
|
|
id string
|
|
name, comment, email string
|
|
}{
|
|
{"", "", "", ""},
|
|
{"John Smith", "John Smith", "", ""},
|
|
{"John Smith ()", "John Smith", "", ""},
|
|
{"John Smith () <>", "John Smith", "", ""},
|
|
{"(comment", "", "comment", ""},
|
|
{"(comment)", "", "comment", ""},
|
|
{"<email", "", "", "email"},
|
|
{"<email> sdfk", "", "", "email"},
|
|
{" John Smith ( Comment ) asdkflj < email > lksdfj", "John Smith", "Comment", "email"},
|
|
{" John Smith < email > lksdfj", "John Smith", "", "email"},
|
|
{"(<foo", "", "<foo", ""},
|
|
{"René Descartes (العربي)", "René Descartes", "العربي", ""},
|
|
}
|
|
|
|
func TestParseUserId(t *testing.T) {
|
|
for i, test := range userIdTests {
|
|
name, comment, email := parseUserId(test.id)
|
|
if name != test.name {
|
|
t.Errorf("%d: name mismatch got:%s want:%s", i, name, test.name)
|
|
}
|
|
if comment != test.comment {
|
|
t.Errorf("%d: comment mismatch got:%s want:%s", i, comment, test.comment)
|
|
}
|
|
if email != test.email {
|
|
t.Errorf("%d: email mismatch got:%s want:%s", i, email, test.email)
|
|
}
|
|
}
|
|
}
|
|
|
|
var newUserIdTests = []struct {
|
|
name, comment, email, id string
|
|
}{
|
|
{"foo", "", "", "foo"},
|
|
{"", "bar", "", "(bar)"},
|
|
{"", "", "baz", "<baz>"},
|
|
{"foo", "bar", "", "foo (bar)"},
|
|
{"foo", "", "baz", "foo <baz>"},
|
|
{"", "bar", "baz", "(bar) <baz>"},
|
|
{"foo", "bar", "baz", "foo (bar) <baz>"},
|
|
}
|
|
|
|
func TestNewUserId(t *testing.T) {
|
|
for i, test := range newUserIdTests {
|
|
uid := NewUserId(test.name, test.comment, test.email)
|
|
if uid == nil {
|
|
t.Errorf("#%d: returned nil", i)
|
|
continue
|
|
}
|
|
if uid.Id != test.id {
|
|
t.Errorf("#%d: got '%s', want '%s'", i, uid.Id, test.id)
|
|
}
|
|
}
|
|
}
|
|
|
|
var invalidNewUserIdTests = []struct {
|
|
name, comment, email string
|
|
}{
|
|
{"foo(", "", ""},
|
|
{"foo<", "", ""},
|
|
{"", "bar)", ""},
|
|
{"", "bar<", ""},
|
|
{"", "", "baz>"},
|
|
{"", "", "baz)"},
|
|
{"", "", "baz\x00"},
|
|
}
|
|
|
|
func TestNewUserIdWithInvalidInput(t *testing.T) {
|
|
for i, test := range invalidNewUserIdTests {
|
|
if uid := NewUserId(test.name, test.comment, test.email); uid != nil {
|
|
t.Errorf("#%d: returned non-nil value: %#v", i, uid)
|
|
}
|
|
}
|
|
}
|