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 }