github.com/crossplane/upjet@v1.3.0/pkg/types/name/name_test.go (about) 1 // SPDX-FileCopyrightText: 2023 The Crossplane Authors <https://crossplane.io> 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 5 package name 6 7 import ( 8 "testing" 9 10 "github.com/google/go-cmp/cmp" 11 ) 12 13 func TestNewNameFromSnake(t *testing.T) { 14 cases := map[string]struct { 15 in string 16 want Name 17 }{ 18 "Normal": { 19 in: "some_snake", 20 want: Name{ 21 Camel: "SomeSnake", 22 CamelComputed: "SomeSnake", 23 LowerCamel: "someSnake", 24 LowerCamelComputed: "someSnake", 25 Snake: "some_snake", 26 }, 27 }, 28 "AcronymInBeginning": { 29 in: "id_setting", 30 want: Name{ 31 Camel: "IDSetting", 32 CamelComputed: "IdSetting", 33 LowerCamel: "idSetting", 34 LowerCamelComputed: "idSetting", 35 Snake: "id_setting", 36 }, 37 }, 38 "AcronymInMiddle": { 39 in: "some_api_param", 40 want: Name{ 41 Camel: "SomeAPIParam", 42 CamelComputed: "SomeApiParam", 43 LowerCamel: "someAPIParam", 44 LowerCamelComputed: "someApiParam", 45 Snake: "some_api_param", 46 }, 47 }, 48 "AcronymInEnd": { 49 in: "subnet_id", 50 want: Name{ 51 Camel: "SubnetID", 52 CamelComputed: "SubnetId", 53 LowerCamel: "subnetID", 54 LowerCamelComputed: "subnetId", 55 Snake: "subnet_id", 56 }, 57 }, 58 "OnlyAcronym": { 59 in: "ip", 60 want: Name{ 61 Camel: "IP", 62 CamelComputed: "Ip", 63 LowerCamel: "ip", 64 LowerCamelComputed: "ip", 65 Snake: "ip", 66 }, 67 }, 68 } 69 70 for name, tc := range cases { 71 t.Run(name, func(t *testing.T) { 72 got := NewFromSnake(tc.in) 73 74 if diff := cmp.Diff(tc.want, got); diff != "" { 75 t.Errorf("\nNewNameFromSnake(...): -want, +got:\n%s", diff) 76 } 77 }) 78 } 79 } 80 81 func TestNewNameFromCamel(t *testing.T) { 82 cases := map[string]struct { 83 in string 84 want Name 85 }{ 86 "Normal": { 87 in: "SomeCamel", 88 want: Name{ 89 Camel: "SomeCamel", 90 CamelComputed: "SomeCamel", 91 LowerCamel: "someCamel", 92 LowerCamelComputed: "someCamel", 93 Snake: "some_camel", 94 }, 95 }, 96 "AcronymInBeginning": { 97 in: "IDSetting", 98 want: Name{ 99 Camel: "IDSetting", 100 CamelComputed: "IdSetting", 101 LowerCamel: "idSetting", 102 LowerCamelComputed: "idSetting", 103 Snake: "id_setting", 104 }, 105 }, 106 "AcronymInMiddle": { 107 in: "SomeAPIParam", 108 want: Name{ 109 Camel: "SomeAPIParam", 110 CamelComputed: "SomeApiParam", 111 LowerCamel: "someAPIParam", 112 LowerCamelComputed: "someApiParam", 113 Snake: "some_api_param", 114 }, 115 }, 116 "AcronymInEnd": { 117 in: "SubnetID", 118 want: Name{ 119 Camel: "SubnetID", 120 CamelComputed: "SubnetId", 121 LowerCamel: "subnetID", 122 LowerCamelComputed: "subnetId", 123 Snake: "subnet_id", 124 }, 125 }, 126 "OnlyAcronym": { 127 in: "IP", 128 want: Name{ 129 Camel: "IP", 130 CamelComputed: "Ip", 131 LowerCamel: "ip", 132 LowerCamelComputed: "ip", 133 Snake: "ip", 134 }, 135 }, 136 } 137 138 for name, tc := range cases { 139 t.Run(name, func(t *testing.T) { 140 got := NewFromCamel(tc.in) 141 142 if diff := cmp.Diff(tc.want, got); diff != "" { 143 t.Errorf("\nNewNameFromSnake(...): -want, +got:\n%s", diff) 144 } 145 }) 146 } 147 }