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  }