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