package parser import ( "fmt" "testing" "time" "github.com/stretchr/testify/assert" ) func TestParseDuration(t *testing.T) { for _, unit := range []struct { orig string want time.Duration }{ {"0", 0}, {"1min", time.Minute}, {"apx.1min", time.Minute}, {"about 1min", time.Minute}, {"1分", time.Minute}, {"1分1秒", time.Minute + time.Second}, {"1h2m3s", time.Hour + time.Minute*2 + time.Second*3}, {"1H2M3S", time.Hour + time.Minute*2 + time.Second*3}, {"PT1H2M3S", time.Hour + time.Minute*2 + time.Second*3}, {"t01h02m03s", time.Hour + time.Minute*2 + time.Second*3}, {"03s", time.Second * 3}, {"02m03s", time.Minute*2 + time.Second*3}, {"pt02m03s", time.Minute*2 + time.Second*3}, {"00:00", time.Minute*0 + time.Second*0}, {"4:00", time.Minute*4 + time.Second*0}, {"04:00", time.Minute*4 + time.Second*0}, {"104:00", time.Minute*104 + time.Second*0}, {"38:28", time.Minute*38 + time.Second*28}, {"01:19:51", time.Hour + time.Minute*19 + time.Second*51}, {"01:02:03", time.Hour + time.Minute*2 + time.Second*3}, {"PT1:2:03", time.Hour + time.Minute*2 + time.Second*3}, {"PT01:02:03", time.Hour + time.Minute*2 + time.Second*3}, } { assert.Equal(t, unit.want, ParseDuration(unit.orig), fmt.Sprintf("Arg: %s", unit.orig)) } } func TestParseActorNames(t *testing.T) { for _, unit := range []struct { orig string want []string }{ {" ", nil}, {"川上ゆう", []string{"川上ゆう"}}, {"川上ゆう 20歲", []string{"川上ゆう 20歲"}}, {"(森野雫)", []string{"森野雫"}}, {"川上ゆう(森野雫)", []string{"川上ゆう", "森野雫"}}, {"新井エリー(晶エリー、大沢佑香)", []string{"新井エリー", "晶エリー", "大沢佑香"}}, } { assert.ElementsMatch(t, unit.want, ParseActorNames(unit.orig), fmt.Sprintf("Arg: %s", unit.orig)) } } func TestParseIDToNumber(t *testing.T) { for _, unit := range []struct { id, want string }{ {"mdx0109", "MDX-0109"}, {"mdx-0264", "MDX-0264"}, {"91cm109", "91CM-109"}, {"91CM-109", "91CM-109"}, {"dldss287", "DLDSS-287"}, } { assert.Equal(t, unit.want, ParseIDToNumber(unit.id)) } } func TestParseBustCupSize(t *testing.T) { for _, unit := range []struct { size string bust int cup string }{ {"32G", 32, "G"}, {"28F", 28, "F"}, {"28 F", 28, "F"}, } { bust, cup, err := ParseBustCupSize(unit.size) if assert.NoError(t, err) { assert.Equal(t, unit.bust, bust) assert.Equal(t, unit.cup, cup) } } }