...

Source file src/github.com/gobuffalo/flect/ident_test.go

Documentation: github.com/gobuffalo/flect

     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