| package gen |
| |
| import ( |
| "testing" |
| ) |
| |
| func TestCamelToSnake(t *testing.T) { |
| for i, test := range []struct { |
| In, Out string |
| }{ |
| {"", ""}, |
| {"A", "a"}, |
| {"SimpleExample", "simple_example"}, |
| {"internalField", "internal_field"}, |
| |
| {"SomeHTTPStuff", "some_http_stuff"}, |
| {"WriteJSON", "write_json"}, |
| {"HTTP2Server", "http2_server"}, |
| {"Some_Mixed_Case", "some_mixed_case"}, |
| {"do_nothing", "do_nothing"}, |
| |
| {"JSONHTTPRPCServer", "jsonhttprpc_server"}, // nothing can be done here without a dictionary |
| } { |
| got := camelToSnake(test.In) |
| if got != test.Out { |
| t.Errorf("[%d] camelToSnake(%s) = %s; want %s", i, test.In, got, test.Out) |
| } |
| } |
| } |
| |
| func TestCamelToLowerCamel(t *testing.T) { |
| for i, test := range []struct { |
| In, Out string |
| }{ |
| {"", ""}, |
| {"A", "a"}, |
| {"SimpleExample", "simpleExample"}, |
| {"internalField", "internalField"}, |
| |
| {"SomeHTTPStuff", "someHTTPStuff"}, |
| {"WriteJSON", "writeJSON"}, |
| {"HTTP2Server", "http2Server"}, |
| |
| {"JSONHTTPRPCServer", "jsonhttprpcServer"}, // nothing can be done here without a dictionary |
| } { |
| got := lowerFirst(test.In) |
| if got != test.Out { |
| t.Errorf("[%d] lowerFirst(%s) = %s; want %s", i, test.In, got, test.Out) |
| } |
| } |
| } |
| |
| func TestJoinFunctionNameParts(t *testing.T) { |
| for i, test := range []struct { |
| keepFirst bool |
| parts []string |
| out string |
| }{ |
| {false, []string{}, ""}, |
| {false, []string{"a"}, "A"}, |
| {false, []string{"simple", "example"}, "SimpleExample"}, |
| {true, []string{"first", "example"}, "firstExample"}, |
| {false, []string{"some", "UPPER", "case"}, "SomeUPPERCase"}, |
| {false, []string{"number", "123"}, "Number123"}, |
| } { |
| got := joinFunctionNameParts(test.keepFirst, test.parts...) |
| if got != test.out { |
| t.Errorf("[%d] joinFunctionNameParts(%v) = %s; want %s", i, test.parts, got, test.out) |
| } |
| } |
| } |
| |
| func TestFixVendorPath(t *testing.T) { |
| for i, test := range []struct { |
| In, Out string |
| }{ |
| {"", ""}, |
| {"time", "time"}, |
| {"project/vendor/subpackage", "subpackage"}, |
| } { |
| got := fixPkgPathVendoring(test.In) |
| if got != test.Out { |
| t.Errorf("[%d] fixPkgPathVendoring(%s) = %s; want %s", i, test.In, got, test.Out) |
| } |
| } |
| |
| } |