123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- // Copyright 2019 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 strs
- import (
- "strconv"
- "testing"
- )
- func TestGoCamelCase(t *testing.T) {
- tests := []struct {
- in, want string
- }{
- {"", ""},
- {"one", "One"},
- {"one_two", "OneTwo"},
- {"_my_field_name_2", "XMyFieldName_2"},
- {"Something_Capped", "Something_Capped"},
- {"my_Name", "My_Name"},
- {"OneTwo", "OneTwo"},
- {"_", "X"},
- {"_a_", "XA_"},
- {"one.two", "OneTwo"},
- {"one.Two", "One_Two"},
- {"one_two.three_four", "OneTwoThreeFour"},
- {"one_two.Three_four", "OneTwo_ThreeFour"},
- {"_one._two", "XOne_XTwo"},
- {"SCREAMING_SNAKE_CASE", "SCREAMING_SNAKE_CASE"},
- {"double__underscore", "Double_Underscore"},
- {"camelCase", "CamelCase"},
- {"go2proto", "Go2Proto"},
- {"世界", "世界"},
- {"x世界", "X世界"},
- {"foo_bar世界", "FooBar世界"},
- }
- for _, tc := range tests {
- if got := GoCamelCase(tc.in); got != tc.want {
- t.Errorf("GoCamelCase(%q) = %q, want %q", tc.in, got, tc.want)
- }
- }
- }
- func TestGoSanitized(t *testing.T) {
- tests := []struct {
- in, want string
- }{
- {"", "_"},
- {"boo", "boo"},
- {"Boo", "Boo"},
- {"ßoo", "ßoo"},
- {"default", "_default"},
- {"hello", "hello"},
- {"hello-world!!", "hello_world__"},
- {"hello-\xde\xad\xbe\xef\x00", "hello_____"},
- {"hello 世界", "hello_世界"},
- {"世界", "世界"},
- }
- for _, tc := range tests {
- if got := GoSanitized(tc.in); got != tc.want {
- t.Errorf("GoSanitized(%q) = %q, want %q", tc.in, got, tc.want)
- }
- }
- }
- func TestName(t *testing.T) {
- tests := []struct {
- in string
- inEnumPrefix string
- wantMapEntry string
- wantEnumValue string
- wantTrimValue string
- wantJSONCamelCase string
- wantJSONSnakeCase string
- }{{
- in: "abc",
- inEnumPrefix: "",
- wantMapEntry: "AbcEntry",
- wantEnumValue: "Abc",
- wantTrimValue: "abc",
- wantJSONCamelCase: "abc",
- wantJSONSnakeCase: "abc",
- }, {
- in: "foo_baR_",
- inEnumPrefix: "foo_bar",
- wantMapEntry: "FooBaREntry",
- wantEnumValue: "FooBar",
- wantTrimValue: "foo_baR_",
- wantJSONCamelCase: "fooBaR",
- wantJSONSnakeCase: "foo_ba_r_",
- }, {
- in: "snake_caseCamelCase",
- inEnumPrefix: "snakecasecamel",
- wantMapEntry: "SnakeCaseCamelCaseEntry",
- wantEnumValue: "SnakeCasecamelcase",
- wantTrimValue: "Case",
- wantJSONCamelCase: "snakeCaseCamelCase",
- wantJSONSnakeCase: "snake_case_camel_case",
- }, {
- in: "FiZz_BuZz",
- inEnumPrefix: "fizz",
- wantMapEntry: "FiZzBuZzEntry",
- wantEnumValue: "FizzBuzz",
- wantTrimValue: "BuZz",
- wantJSONCamelCase: "FiZzBuZz",
- wantJSONSnakeCase: "_fi_zz__bu_zz",
- }}
- for _, tt := range tests {
- if got := MapEntryName(tt.in); got != tt.wantMapEntry {
- t.Errorf("MapEntryName(%q) = %q, want %q", tt.in, got, tt.wantMapEntry)
- }
- if got := EnumValueName(tt.in); got != tt.wantEnumValue {
- t.Errorf("EnumValueName(%q) = %q, want %q", tt.in, got, tt.wantEnumValue)
- }
- if got := TrimEnumPrefix(tt.in, tt.inEnumPrefix); got != tt.wantTrimValue {
- t.Errorf("ErimEnumPrefix(%q, %q) = %q, want %q", tt.in, tt.inEnumPrefix, got, tt.wantTrimValue)
- }
- if got := JSONCamelCase(tt.in); got != tt.wantJSONCamelCase {
- t.Errorf("JSONCamelCase(%q) = %q, want %q", tt.in, got, tt.wantJSONCamelCase)
- }
- if got := JSONSnakeCase(tt.in); got != tt.wantJSONSnakeCase {
- t.Errorf("JSONSnakeCase(%q) = %q, want %q", tt.in, got, tt.wantJSONSnakeCase)
- }
- }
- }
- var (
- srcString = "1234"
- srcBytes = []byte(srcString)
- dst uint64
- )
- func BenchmarkCast(b *testing.B) {
- b.Run("Ideal", func(b *testing.B) {
- b.ReportAllocs()
- for i := 0; i < b.N; i++ {
- dst, _ = strconv.ParseUint(srcString, 0, 64)
- }
- if dst != 1234 {
- b.Errorf("got %d, want %s", dst, srcString)
- }
- })
- b.Run("Copy", func(b *testing.B) {
- b.ReportAllocs()
- for i := 0; i < b.N; i++ {
- dst, _ = strconv.ParseUint(string(srcBytes), 0, 64)
- }
- if dst != 1234 {
- b.Errorf("got %d, want %s", dst, srcString)
- }
- })
- b.Run("Cast", func(b *testing.B) {
- b.ReportAllocs()
- for i := 0; i < b.N; i++ {
- dst, _ = strconv.ParseUint(UnsafeString(srcBytes), 0, 64)
- }
- if dst != 1234 {
- b.Errorf("got %d, want %s", dst, srcString)
- }
- })
- }
|