github.com/hzck/speedroute@v0.0.0-20201115191102-403b7d0e443f/parser/timeparser_test.go (about)

     1  package parser
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  // TestParseTime tests all supported time formats into ms.
     8  func TestParseTime(t *testing.T) {
     9  	var data = []struct {
    10  		in  string
    11  		out int
    12  	}{
    13  		{"", 0},                  // 0 value
    14  		{".", 0},                 // 0 value
    15  		{"0", 0},                 // 0 value
    16  		{"55", 55},               // ms
    17  		{"555", 555},             // ms
    18  		{"5555", 5555},           // ms
    19  		{"05555", 5555},          // ms 0 prefix
    20  		{".9994", 999},           // ms rounding down
    21  		{".9995", 1000},          // ms rounding up
    22  		{"1.", 1000},             // secs no ms number
    23  		{"25.0", 25000},          // secs
    24  		{"075.0", 75000},         // secs 0 prefix
    25  		{"100.0", 100000},        // secs 3 numbers
    26  		{"10.5", 10500},          // secs & ms
    27  		{"1:00", 60000},          // mins
    28  		{"02:00", 120000},        // mins 0 prefix
    29  		{"100:10", 6010000},      // mins & secs 3 numbers
    30  		{"100:03.501", 6003501},  // mins, secs & ms
    31  		{"1:00:00", 3600000},     // hours
    32  		{"02:00:00", 7200000},    // hours 0 prefix
    33  		{"100:00:00", 360000000}, // hours 3 numbers
    34  		{"1:02:05.333", 3725333}, // hours, mins, secs & ms
    35  	}
    36  	for _, d := range data {
    37  		parsed, err := parseTime(d.in)
    38  		if err != nil {
    39  			t.Errorf("The parsed time for " + d.in + " is error: " + err.Error())
    40  		}
    41  		if parsed != d.out {
    42  			t.Errorf("The parsed time for "+d.in+" is incorrect: %v != %v", parsed, d.out)
    43  		}
    44  	}
    45  }