1 package flect
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/require"
7 )
8
9 func Test_New(t *testing.T) {
10 table := []Ident{
11 {"", []string{}},
12 {"widget", []string{"widget"}},
13 {"widget_id", []string{"widget", "ID"}},
14 {"WidgetID", []string{"Widget", "ID"}},
15 {"Widget_ID", []string{"Widget", "ID"}},
16 {"widget_ID", []string{"widget", "ID"}},
17 {"widget/ID", []string{"widget", "ID"}},
18 {"widgetID", []string{"widget", "ID"}},
19 {"widgetName", []string{"widget", "Name"}},
20 {"JWTName", []string{"JWT", "Name"}},
21 {"JWTname", []string{"JWTname"}},
22 {"jwtname", []string{"jwtname"}},
23 {"sql", []string{"SQL"}},
24 {"sQl", []string{"SQL"}},
25 {"id", []string{"ID"}},
26 {"Id", []string{"ID"}},
27 {"iD", []string{"ID"}},
28 {"html", []string{"HTML"}},
29 {"Html", []string{"HTML"}},
30 {"HTML", []string{"HTML"}},
31 {"with `code` inside", []string{"with", "`code`", "inside"}},
32 {"Donald E. Knuth", []string{"Donald", "E.", "Knuth"}},
33 {"Random text with *(bad)* characters", []string{"Random", "text", "with", "*(bad)*", "characters"}},
34 {"Allow_Under_Scores", []string{"Allow", "Under", "Scores"}},
35 {"Trailing bad characters!@#", []string{"Trailing", "bad", "characters!@#"}},
36 {"!@#Leading bad characters", []string{"!@#", "Leading", "bad", "characters"}},
37 {"Squeeze separators", []string{"Squeeze", "separators"}},
38 {"Test with + sign", []string{"Test", "with", "sign"}},
39 {"Malmö", []string{"Malmö"}},
40 {"Garçons", []string{"Garçons"}},
41 {"Opsů", []string{"Opsů"}},
42 {"Ærøskøbing", []string{"Ærøskøbing"}},
43 {"Aßlar", []string{"Aßlar"}},
44 {"Japanese: 日本語", []string{"Japanese", "日本語"}},
45 }
46
47 for _, tt := range table {
48 t.Run(tt.Original, func(st *testing.T) {
49 r := require.New(st)
50 i := New(tt.Original)
51 r.Equal(tt.Original, i.Original)
52 r.Equal(tt.Parts, i.Parts)
53 })
54 }
55 }
56 func Test_MarshalText(t *testing.T) {
57 r := require.New(t)
58
59 n := New("mark")
60 b, err := n.MarshalText()
61 r.NoError(err)
62 r.Equal("mark", string(b))
63
64 r.NoError((&n).UnmarshalText([]byte("bates")))
65 r.Equal("bates", n.String())
66 }
67
68 func Benchmark_New(b *testing.B) {
69
70 table := []string{
71 "",
72 "widget",
73 "widget_id",
74 "WidgetID",
75 "Widget_ID",
76 "widget_ID",
77 "widget/ID",
78 "widgetID",
79 "widgetName",
80 "JWTName",
81 "JWTname",
82 "jwtname",
83 "sql",
84 "sQl",
85 "id",
86 "Id",
87 "iD",
88 "html",
89 "Html",
90 "HTML",
91 "with `code` inside",
92 "Donald E. Knuth",
93 "Random text with *(bad)* characters",
94 "Allow_Under_Scores",
95 "Trailing bad characters!@#",
96 "!@#Leading bad characters",
97 "Squeeze separators",
98 "Test with + sign",
99 "Malmö",
100 "Garçons",
101 "Opsů",
102 "Ærøskøbing",
103 "Aßlar",
104 "Japanese: 日本語",
105 }
106
107 for n := 0; n < b.N; n++ {
108 for i := range table {
109 New(table[i])
110 }
111 }
112 }
113
View as plain text