File size: 2,505 Bytes
ca7217f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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)
		}
	}
}