go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/sdk/stringutil/fields_test.go (about)

     1  /*
     2  
     3  Copyright (c) 2023 - Present. Will Charczuk. All rights reserved.
     4  Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository.
     5  
     6  */
     7  
     8  package stringutil
     9  
    10  import (
    11  	"testing"
    12  
    13  	. "go.charczuk.com/sdk/assert"
    14  )
    15  
    16  func Test_Fields(t *testing.T) {
    17  	values := Fields("")
    18  	ItsEqual(t, 0, len(values))
    19  
    20  	values = Fields("foo")
    21  	ItsEqual(t, 1, len(values))
    22  	ItsEqual(t, "foo", values[0])
    23  
    24  	values = Fields("foo bar")
    25  	ItsEqual(t, 2, len(values))
    26  	ItsEqual(t, "foo", values[0])
    27  	ItsEqual(t, "bar", values[1])
    28  
    29  	values = Fields("foo  bar")
    30  	ItsEqual(t, 2, len(values))
    31  	ItsEqual(t, "foo", values[0])
    32  	ItsEqual(t, "bar", values[1])
    33  
    34  	values = Fields("foo\tbar")
    35  	ItsEqual(t, 2, len(values))
    36  	ItsEqual(t, "foo", values[0])
    37  	ItsEqual(t, "bar", values[1])
    38  
    39  	values = Fields("foo \tbar")
    40  	ItsEqual(t, 2, len(values))
    41  	ItsEqual(t, "foo", values[0])
    42  	ItsEqual(t, "bar", values[1])
    43  
    44  	values = Fields("foo bar  ")
    45  	ItsEqual(t, 2, len(values))
    46  	ItsEqual(t, "foo", values[0])
    47  	ItsEqual(t, "bar", values[1])
    48  
    49  	values = Fields("foo bar baz")
    50  	ItsEqual(t, 3, len(values))
    51  	ItsEqual(t, "foo", values[0])
    52  	ItsEqual(t, "bar", values[1])
    53  	ItsEqual(t, "baz", values[2])
    54  
    55  	values = Fields(`foo "bar baz"`)
    56  	ItsEqual(t, 2, len(values))
    57  	ItsEqual(t, "foo", values[0])
    58  	ItsEqual(t, `bar baz`, values[1])
    59  
    60  	values = Fields(`foo --config="bar baz"`)
    61  	ItsEqual(t, 2, len(values))
    62  	ItsEqual(t, "foo", values[0])
    63  	ItsEqual(t, `--config="bar baz"`, values[1])
    64  
    65  	values = Fields(`foo --config='bar baz="hi"'`)
    66  	ItsEqual(t, 2, len(values))
    67  	ItsEqual(t, "foo", values[0])
    68  	ItsEqual(t, `--config='bar baz="hi"'`, values[1])
    69  
    70  	values = Fields(`foo --config="bar baz='hi'"`)
    71  	ItsEqual(t, 2, len(values))
    72  	ItsEqual(t, "foo", values[0])
    73  	ItsEqual(t, `--config="bar baz='hi'"`, values[1])
    74  
    75  	values = Fields(`“what is xyz’s best kept secret?” “1st floor bathrooms” “xyz street side exit” “other (please explain)”`)
    76  	ItsEqual(t, 4, len(values))
    77  	ItsEqual(t, `what is xyz’s best kept secret?`, values[0])
    78  	ItsEqual(t, `1st floor bathrooms`, values[1])
    79  	ItsEqual(t, `xyz street side exit`, values[2])
    80  	ItsEqual(t, `other (please explain)`, values[3])
    81  
    82  	values = Fields(`‘how about now’ ‘or now’`)
    83  	ItsEqual(t, 2, len(values))
    84  	ItsEqual(t, `how about now`, values[0])
    85  	ItsEqual(t, `or now`, values[1])
    86  }