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 }