github.com/matrixorigin/matrixone@v0.7.0/pkg/sql/plan/function/builtin/multi/format_test.go (about)

     1  // Copyright 2022 Matrix Origin
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package multi
    16  
    17  import (
    18  	"testing"
    19  
    20  	"github.com/matrixorigin/matrixone/pkg/container/vector"
    21  	"github.com/matrixorigin/matrixone/pkg/testutil"
    22  	"github.com/stretchr/testify/require"
    23  )
    24  
    25  func TestFormatWithTwo(t *testing.T) {
    26  	testCases := []arg{
    27  		{
    28  			info: "Test01", proc: testutil.NewProc(),
    29  			vs: []*vector.Vector{
    30  				testutil.MakeScalarVarchar("12332.123456", 1),
    31  				testutil.MakeScalarVarchar("4", 1),
    32  			},
    33  			match:  true,
    34  			err:    false,
    35  			expect: testutil.MakeScalarVarchar("12,332.1235", 1),
    36  		},
    37  
    38  		{
    39  			info: "Test02", proc: testutil.NewProc(),
    40  			vs: []*vector.Vector{
    41  				testutil.MakeScalarVarchar("12332.1", 1),
    42  				testutil.MakeScalarVarchar("4", 1),
    43  			},
    44  			match:  true,
    45  			err:    false,
    46  			expect: testutil.MakeScalarVarchar("12,332.1000", 1),
    47  		},
    48  
    49  		{
    50  			info: "Test03", proc: testutil.NewProc(),
    51  			vs: []*vector.Vector{
    52  				testutil.MakeScalarVarchar("12332.2", 1),
    53  				testutil.MakeScalarVarchar("0", 1),
    54  			},
    55  			match:  true,
    56  			err:    false,
    57  			expect: testutil.MakeScalarVarchar("12,332", 1),
    58  		},
    59  
    60  		{
    61  			info: "Test04", proc: testutil.NewProc(),
    62  			vs: []*vector.Vector{
    63  				testutil.MakeScalarVarchar("-.12334.2", 1),
    64  				testutil.MakeScalarVarchar("2", 1),
    65  			},
    66  			match:  true,
    67  			err:    false,
    68  			expect: testutil.MakeScalarVarchar("-0.12", 1),
    69  		},
    70  	}
    71  
    72  	for _, tc := range testCases {
    73  		t.Run(tc.info, func(t *testing.T) {
    74  			gotV, err := Format(tc.vs, tc.proc)
    75  			if err != nil {
    76  				t.Fatal(err)
    77  			}
    78  			require.Equal(t, tc.expect.Col, gotV.Col)
    79  		})
    80  	}
    81  }
    82  
    83  func TestFormatWithThree(t *testing.T) {
    84  	testCases := []arg{
    85  		{
    86  			info: "Test01", proc: testutil.NewProc(),
    87  			vs: []*vector.Vector{
    88  				testutil.MakeScalarVarchar("12332.123456", 1),
    89  				testutil.MakeScalarVarchar("4", 1),
    90  				testutil.MakeScalarVarchar("en_US", 1),
    91  			},
    92  			match:  true,
    93  			err:    false,
    94  			expect: testutil.MakeScalarVarchar("12,332.1235", 1),
    95  		},
    96  
    97  		{
    98  			info: "Test02", proc: testutil.NewProc(),
    99  			vs: []*vector.Vector{
   100  				testutil.MakeScalarVarchar("12332.1", 1),
   101  				testutil.MakeScalarVarchar("4", 1),
   102  				testutil.MakeScalarVarchar("en_US", 1),
   103  			},
   104  			match:  true,
   105  			err:    false,
   106  			expect: testutil.MakeScalarVarchar("12,332.1000", 1),
   107  		},
   108  
   109  		{
   110  			info: "Test03", proc: testutil.NewProc(),
   111  			vs: []*vector.Vector{
   112  				testutil.MakeScalarVarchar("12332.2", 1),
   113  				testutil.MakeScalarVarchar("0", 1),
   114  				testutil.MakeScalarVarchar("en_US", 1),
   115  			},
   116  			match:  true,
   117  			err:    false,
   118  			expect: testutil.MakeScalarVarchar("12,332", 1),
   119  		},
   120  
   121  		{
   122  			info: "Test04", proc: testutil.NewProc(),
   123  			vs: []*vector.Vector{
   124  				testutil.MakeScalarVarchar("-.12334.2", 1),
   125  				testutil.MakeScalarVarchar("2", 1),
   126  				testutil.MakeScalarVarchar("en_US", 1),
   127  			},
   128  			match:  true,
   129  			err:    false,
   130  			expect: testutil.MakeScalarVarchar("-0.12", 1),
   131  		},
   132  
   133  		{
   134  			info: "Test05", proc: testutil.NewProc(),
   135  			vs: []*vector.Vector{
   136  				testutil.MakeScalarVarchar("12332.123456", 1),
   137  				testutil.MakeScalarVarchar("4", 1),
   138  				testutil.MakeScalarVarchar("ar_SA", 1),
   139  			},
   140  			match:  true,
   141  			err:    false,
   142  			expect: testutil.MakeScalarVarchar("12332.1235", 1),
   143  		},
   144  
   145  		{
   146  			info: "Test06", proc: testutil.NewProc(),
   147  			vs: []*vector.Vector{
   148  				testutil.MakeScalarVarchar("12332.1", 1),
   149  				testutil.MakeScalarVarchar("4", 1),
   150  				testutil.MakeScalarVarchar("ar_SA", 1),
   151  			},
   152  			match:  true,
   153  			err:    false,
   154  			expect: testutil.MakeScalarVarchar("12332.1000", 1),
   155  		},
   156  
   157  		{
   158  			info: "Test07", proc: testutil.NewProc(),
   159  			vs: []*vector.Vector{
   160  				testutil.MakeScalarVarchar("12332.2", 1),
   161  				testutil.MakeScalarVarchar("0", 1),
   162  				testutil.MakeScalarVarchar("ar_SA", 1),
   163  			},
   164  			match:  true,
   165  			err:    false,
   166  			expect: testutil.MakeScalarVarchar("12332", 1),
   167  		},
   168  
   169  		{
   170  			info: "Test08", proc: testutil.NewProc(),
   171  			vs: []*vector.Vector{
   172  				testutil.MakeScalarVarchar("-.12334.2", 1),
   173  				testutil.MakeScalarVarchar("2", 1),
   174  				testutil.MakeScalarVarchar("ar_SA", 1),
   175  			},
   176  			match:  true,
   177  			err:    false,
   178  			expect: testutil.MakeScalarVarchar("-0.12", 1),
   179  		},
   180  
   181  		{
   182  			info: "Test09", proc: testutil.NewProc(),
   183  			vs: []*vector.Vector{
   184  				testutil.MakeScalarVarchar("12332.123456", 1),
   185  				testutil.MakeScalarVarchar("4", 1),
   186  				testutil.MakeScalarVarchar("be_BY", 1),
   187  			},
   188  			match:  true,
   189  			err:    false,
   190  			expect: testutil.MakeScalarVarchar("12.332,1235", 1),
   191  		},
   192  
   193  		{
   194  			info: "Test10", proc: testutil.NewProc(),
   195  			vs: []*vector.Vector{
   196  				testutil.MakeScalarVarchar("12332.1", 1),
   197  				testutil.MakeScalarVarchar("4", 1),
   198  				testutil.MakeScalarVarchar("be_BY", 1),
   199  			},
   200  			match:  true,
   201  			err:    false,
   202  			expect: testutil.MakeScalarVarchar("12.332,1000", 1),
   203  		},
   204  
   205  		{
   206  			info: "Test11", proc: testutil.NewProc(),
   207  			vs: []*vector.Vector{
   208  				testutil.MakeScalarVarchar("12332.2", 1),
   209  				testutil.MakeScalarVarchar("0", 1),
   210  				testutil.MakeScalarVarchar("be_BY", 1),
   211  			},
   212  			match:  true,
   213  			err:    false,
   214  			expect: testutil.MakeScalarVarchar("12.332", 1),
   215  		},
   216  
   217  		{
   218  			info: "Test12", proc: testutil.NewProc(),
   219  			vs: []*vector.Vector{
   220  				testutil.MakeScalarVarchar("-.12334.2", 1),
   221  				testutil.MakeScalarVarchar("2", 1),
   222  				testutil.MakeScalarVarchar("be_BY", 1),
   223  			},
   224  			match:  true,
   225  			err:    false,
   226  			expect: testutil.MakeScalarVarchar("-0,12", 1),
   227  		},
   228  
   229  		{
   230  			info: "Test13", proc: testutil.NewProc(),
   231  			vs: []*vector.Vector{
   232  				testutil.MakeScalarVarchar("12332.123456", 1),
   233  				testutil.MakeScalarVarchar("4", 1),
   234  				testutil.MakeScalarVarchar("bg_BG", 1),
   235  			},
   236  			match:  true,
   237  			err:    false,
   238  			expect: testutil.MakeScalarVarchar("12 332,1235", 1),
   239  		},
   240  
   241  		{
   242  			info: "Test14", proc: testutil.NewProc(),
   243  			vs: []*vector.Vector{
   244  				testutil.MakeScalarVarchar("12332.1", 1),
   245  				testutil.MakeScalarVarchar("4", 1),
   246  				testutil.MakeScalarVarchar("bg_BG", 1),
   247  			},
   248  			match:  true,
   249  			err:    false,
   250  			expect: testutil.MakeScalarVarchar("12 332,1000", 1),
   251  		},
   252  
   253  		{
   254  			info: "Test15", proc: testutil.NewProc(),
   255  			vs: []*vector.Vector{
   256  				testutil.MakeScalarVarchar("12332.2", 1),
   257  				testutil.MakeScalarVarchar("0", 1),
   258  				testutil.MakeScalarVarchar("bg_BG", 1),
   259  			},
   260  			match:  true,
   261  			err:    false,
   262  			expect: testutil.MakeScalarVarchar("12 332", 1),
   263  		},
   264  
   265  		{
   266  			info: "Test16", proc: testutil.NewProc(),
   267  			vs: []*vector.Vector{
   268  				testutil.MakeScalarVarchar("-.12334.2", 1),
   269  				testutil.MakeScalarVarchar("2", 1),
   270  				testutil.MakeScalarVarchar("bg_BG", 1),
   271  			},
   272  			match:  true,
   273  			err:    false,
   274  			expect: testutil.MakeScalarVarchar("-0,12", 1),
   275  		},
   276  
   277  		{
   278  			info: "Test17", proc: testutil.NewProc(),
   279  			vs: []*vector.Vector{
   280  				testutil.MakeScalarVarchar("12332.123456", 1),
   281  				testutil.MakeScalarVarchar("4", 1),
   282  				testutil.MakeScalarVarchar("de_CH", 1),
   283  			},
   284  			match:  true,
   285  			err:    false,
   286  			expect: testutil.MakeScalarVarchar("12'332.1235", 1),
   287  		},
   288  
   289  		{
   290  			info: "Test18", proc: testutil.NewProc(),
   291  			vs: []*vector.Vector{
   292  				testutil.MakeScalarVarchar("12332.1", 1),
   293  				testutil.MakeScalarVarchar("4", 1),
   294  				testutil.MakeScalarVarchar("de_CH", 1),
   295  			},
   296  			match:  true,
   297  			err:    false,
   298  			expect: testutil.MakeScalarVarchar("12'332.1000", 1),
   299  		},
   300  
   301  		{
   302  			info: "Test19", proc: testutil.NewProc(),
   303  			vs: []*vector.Vector{
   304  				testutil.MakeScalarVarchar("12332.2", 1),
   305  				testutil.MakeScalarVarchar("0", 1),
   306  				testutil.MakeScalarVarchar("de_CH", 1),
   307  			},
   308  			match:  true,
   309  			err:    false,
   310  			expect: testutil.MakeScalarVarchar("12'332", 1),
   311  		},
   312  
   313  		{
   314  			info: "Test20", proc: testutil.NewProc(),
   315  			vs: []*vector.Vector{
   316  				testutil.MakeScalarVarchar("-.12334.2", 1),
   317  				testutil.MakeScalarVarchar("2", 1),
   318  				testutil.MakeScalarVarchar("de_CH", 1),
   319  			},
   320  			match:  true,
   321  			err:    false,
   322  			expect: testutil.MakeScalarVarchar("-0.12", 1),
   323  		},
   324  		{
   325  			info: "Test21", proc: testutil.NewProc(),
   326  			vs: []*vector.Vector{
   327  				testutil.MakeScalarVarchar("12332.123456", 1),
   328  				testutil.MakeScalarVarchar("4", 1),
   329  				testutil.MakeScalarVarchar("xxxx", 1),
   330  			},
   331  			match:  true,
   332  			err:    false,
   333  			expect: testutil.MakeScalarVarchar("12,332.1235", 1),
   334  		},
   335  
   336  		{
   337  			info: "Test22", proc: testutil.NewProc(),
   338  			vs: []*vector.Vector{
   339  				testutil.MakeScalarVarchar("12332.1", 1),
   340  				testutil.MakeScalarVarchar("4", 1),
   341  				testutil.MakeScalarVarchar("xxx", 1),
   342  			},
   343  			match:  true,
   344  			err:    false,
   345  			expect: testutil.MakeScalarVarchar("12,332.1000", 1),
   346  		},
   347  	}
   348  
   349  	for _, tc := range testCases {
   350  		t.Run(tc.info, func(t *testing.T) {
   351  			gotV, err := Format(tc.vs, tc.proc)
   352  			if err != nil {
   353  				t.Fatal(err)
   354  			}
   355  			require.Equal(t, tc.expect.Col, gotV.Col)
   356  		})
   357  	}
   358  }