MetaTube / common /parser /parse_test.go
henry99a's picture
Clean commit for Hugging Face Spaces without binary files
ca7217f
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)
}
}
}