This repository was archived by the owner on Jun 9, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Original file line number Diff line number Diff line change
1
+ def test_snake_case () -> None :
2
+ from betterproto2_compiler .casing import snake_case
3
+
4
+ # Simple renaming
5
+ assert snake_case ("methodName" ) == "method_name"
6
+ assert snake_case ("MethodName" ) == "method_name"
7
+
8
+ # Don't break acronyms
9
+ assert snake_case ("HTTPRequest" ) == "http_request"
10
+ assert snake_case ("RequestHTTP" ) == "request_http"
11
+ assert snake_case ("HTTPRequest2" ) == "http_request_2"
12
+ assert snake_case ("RequestHTTP2" ) == "request_http_2"
13
+ assert snake_case ("GetAResponse" ) == "get_a_response"
14
+
15
+ # Split digits
16
+ assert snake_case ("Get2025Results" ) == "get_2025_results"
17
+ assert snake_case ("Get10yResults" ) == "get_10y_results"
18
+
19
+ # If the name already contains an underscore or is lowercase, don't change it at all.
20
+ # There is a risk of breaking names otherwise.
21
+ assert snake_case ("aaa_123_bbb" ) == "aaa_123_bbb"
22
+ assert snake_case ("aaa_123bbb" ) == "aaa_123bbb"
23
+ assert snake_case ("aaa123_bbb" ) == "aaa123_bbb"
24
+ assert snake_case ("get_HTTP_response" ) == "get_HTTP_response"
25
+ assert snake_case ("_methodName" ) == "_methodName"
26
+ assert snake_case ("make_gRPC_request" ) == "make_gRPC_request"
27
+
28
+ assert snake_case ("value1" ) == "value1"
29
+ assert snake_case ("value1string" ) == "value1string"
30
+
31
+ # It is difficult to cover all the cases with a simple algorithm...
32
+ # "GetValueAsUInt32" -> "get_value_as_u_int_32"
You can’t perform that action at this time.
0 commit comments