| // 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) | |
| } | |
| } | |
| } |