1package name
2
3import (
4	"testing"
5
6	"github.com/stretchr/testify/require"
7)
8
9type tt struct {
10	act string
11	exp string
12}
13
14func Test_Name(t *testing.T) {
15	table := []tt{
16		{"", ""},
17		{"bob dylan", "BobDylan"},
18		{"widgetID", "WidgetID"},
19		{"widget_ID", "WidgetID"},
20		{"Widget_ID", "WidgetID"},
21		{"Widget_Id", "WidgetID"},
22		{"Widget_id", "WidgetID"},
23		{"Nice to see you today!", "NiceToSeeYouToday"},
24		{"*hello*", "Hello"},
25		{"i've read a book! have you read it?", "IveReadABookHaveYouReadIt"},
26		{"This is `code` ok", "ThisIsCodeOK"},
27		{"foo_bar", "FooBar"},
28		{"admin/widget", "AdminWidget"},
29		{"admin/widgets", "AdminWidget"},
30		{"widget", "Widget"},
31		{"widgets", "Widget"},
32		{"status", "Status"},
33		{"Statuses", "Status"},
34		{"statuses", "Status"},
35		{"People", "Person"},
36		{"people", "Person"},
37	}
38
39	for _, tt := range table {
40		t.Run(tt.act, func(st *testing.T) {
41			r := require.New(st)
42			r.Equal(tt.exp, Proper(tt.act))
43			r.Equal(tt.exp, Proper(tt.exp))
44		})
45	}
46}
47
48func Test_Group(t *testing.T) {
49	table := []tt{
50		{"", ""},
51		{"Person", "People"},
52		{"foo_bar", "FooBars"},
53		{"admin/widget", "AdminWidgets"},
54		{"widget", "Widgets"},
55		{"widgets", "Widgets"},
56		{"greatPerson", "GreatPeople"},
57		{"great/person", "GreatPeople"},
58		{"status", "Statuses"},
59		{"Status", "Statuses"},
60		{"Statuses", "Statuses"},
61		{"statuses", "Statuses"},
62	}
63
64	for _, tt := range table {
65		t.Run(tt.act, func(st *testing.T) {
66			r := require.New(st)
67			r.Equal(tt.exp, Group(tt.act))
68			r.Equal(tt.exp, Group(tt.exp))
69		})
70	}
71}
72
73func Test_MarshalText(t *testing.T) {
74	r := require.New(t)
75
76	n := New("mark")
77	b, err := n.MarshalText()
78	r.NoError(err)
79	r.Equal("mark", string(b))
80
81	r.NoError((&n).UnmarshalText([]byte("bates")))
82	r.Equal("bates", n.String())
83}
84