// Copyright 2018 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 protogen import "testing" func TestCamelCase(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 := camelCase(tc.in); got != tc.want { t.Errorf("CamelCase(%q) = %q, want %q", tc.in, got, tc.want) } } } func TestCleanGoName(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 := cleanGoName(tc.in); got != tc.want { t.Errorf("cleanGoName(%q) = %q, want %q", tc.in, got, tc.want) } } }