github.com/tawesoft/golib/v2@v2.10.0/legacy/humanize/parse_test.go (about)

     1  package humanize
     2  
     3  import (
     4      "testing"
     5  
     6      "golang.org/x/text/language"
     7  )
     8  
     9  func TestParseAcceptComponent(t *testing.T) {
    10      english := NewHumanizer(language.English).(*humanizer)
    11      danish  := NewHumanizer(language.Danish).(*humanizer)
    12  
    13      type test struct {
    14          humanizer *humanizer
    15          humanizerName string
    16          factors Factors
    17          value string
    18          unit Unit
    19          expected float64
    20          expectedRead int
    21          expectedError error
    22      }
    23  
    24      tests := []test{
    25          {english, "english", CommonFactors.Distance, "1.500 km", Unit{"m", "m"}, 1500, 7, nil},
    26          {danish,  "danish",  CommonFactors.Distance, "1,500 km", Unit{"m", "m"}, 1500, 7, nil},
    27      }
    28  
    29      for _, test := range tests {
    30          v, _, bytesRead, err := test.humanizer.acceptOne(test.value, test.factors)
    31          if (err != nil) || (v != test.expected) || (bytesRead != test.expectedRead) {
    32              t.Errorf("humanizer<%s>.acceptOne(%s, %q, factors): got %v, %d, %v but expected %v, %d, %v",
    33                  test.humanizerName, test.value, test.unit,
    34                  v, bytesRead, err,
    35                  test.expected, test.expectedRead, test.expectedError)
    36          }
    37      }
    38  }
    39  
    40  func TestParseAcceptAllComponents(t *testing.T) {
    41      english := NewHumanizer(language.English).(*humanizer)
    42      danish  := NewHumanizer(language.Danish).(*humanizer)
    43  
    44      type test struct {
    45          humanizer *humanizer
    46          humanizerName string
    47          factors Factors
    48          value string
    49          unit Unit
    50          expected float64
    51          expectedRead int
    52          expectedError error
    53      }
    54  
    55      tests := []test{
    56          {english, "english", CommonFactors.Distance, "1.500 km", Unit{"m", "m"}, 1500, 8, nil},
    57          {danish,  "danish",  CommonFactors.Distance, "1,500 km", Unit{"m", "m"}, 1500, 8, nil},
    58  
    59          // unit m is optional
    60          {english, "english", CommonFactors.Distance, "1.500 k", Unit{"m", "m"}, 1500, 7, nil},
    61          {english, "english", CommonFactors.Distance, "1.500 km Trailing", Unit{"m", "m"}, 1500, 9, nil},
    62  
    63          {danish,  "english", CommonFactors.Time,     "30 min 1 s", CommonUnits.Second, 1 + (30 * 60), 10, nil},
    64      }
    65  
    66      for _, test := range tests {
    67          v, bytesRead, err := test.humanizer.Accept(test.value, test.unit, test.factors)
    68          if (err != nil) || (v != test.expected) || (bytesRead != test.expectedRead) {
    69              t.Errorf("humanizer<%s>.accept(%q, %q, factors): got %v, %d, %v but expected %v, %d, %v",
    70                  test.humanizerName, test.value, test.unit,
    71                  v, bytesRead, err,
    72                  test.expected, test.expectedRead, test.expectedError)
    73          }
    74      }
    75  }