139 lines
2.6 KiB
Go
139 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"reflect"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseSingleEntry(t *testing.T) {
|
|
document := strings.Join([]string{
|
|
"1",
|
|
"00:00:00,000 --> 00:00:14,000",
|
|
"toto",
|
|
"titi",
|
|
}, "\n")
|
|
|
|
entries, err := parseSrt(bytes.NewBuffer([]byte(document)))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
expectedEntries := []Entry{
|
|
{
|
|
Start: "00:00:00,000",
|
|
End: "00:00:14,000",
|
|
Line1: "toto",
|
|
Line2: "titi",
|
|
},
|
|
}
|
|
if !reflect.DeepEqual(entries, expectedEntries) {
|
|
t.Fatalf("unexpected entries: %v", entries)
|
|
}
|
|
}
|
|
|
|
func TestParseMultipleEntries(t *testing.T) {
|
|
document := strings.Join([]string{
|
|
"1",
|
|
"00:00:00,000 --> 00:00:14,000",
|
|
"toto",
|
|
"titi",
|
|
"",
|
|
"2",
|
|
"00:01:00,000 --> 00:02:14,000",
|
|
"tutu",
|
|
"tata",
|
|
}, "\n")
|
|
entries, err := parseSrt(bytes.NewBuffer([]byte(document)))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
expectedEntries := []Entry{
|
|
{
|
|
Start: "00:00:00,000",
|
|
End: "00:00:14,000",
|
|
Line1: "toto",
|
|
Line2: "titi",
|
|
},
|
|
{
|
|
Start: "00:01:00,000",
|
|
End: "00:02:14,000",
|
|
Line1: "tutu",
|
|
Line2: "tata",
|
|
},
|
|
}
|
|
if !reflect.DeepEqual(entries, expectedEntries) {
|
|
t.Fatalf("unexpected entries: %v", entries)
|
|
}
|
|
}
|
|
|
|
func TestParseInvalidTimestamp(t *testing.T) {
|
|
document := strings.Join([]string{
|
|
"1",
|
|
"00:00:00.000 --> 00:00:14.000",
|
|
"toto",
|
|
"titi",
|
|
}, "\n")
|
|
_, err := parseSrt(bytes.NewBuffer([]byte(document)))
|
|
if err == nil {
|
|
t.Fatal("expected error")
|
|
} else if eStr := err.Error(); eStr != "invalid timestamp line: \"00:00:00.000 --> 00:00:14.000\"" {
|
|
t.Fatalf("unexpected error: %q", eStr)
|
|
}
|
|
}
|
|
|
|
func TestParseSingleLine(t *testing.T) {
|
|
document := strings.Join([]string{
|
|
"1",
|
|
"00:00:00,000 --> 00:00:14,000",
|
|
"toto",
|
|
}, "\n")
|
|
entries, err := parseSrt(bytes.NewBuffer([]byte(document)))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
expectedEntries := []Entry{
|
|
{
|
|
Start: "00:00:00,000",
|
|
End: "00:00:14,000",
|
|
Line1: "toto",
|
|
Line2: "",
|
|
},
|
|
}
|
|
if !reflect.DeepEqual(entries, expectedEntries) {
|
|
t.Fatalf("unexpected entries: %v", entries)
|
|
}
|
|
}
|
|
|
|
func TestParseMultipleEntriesSingleLine(t *testing.T) {
|
|
document := strings.Join([]string{
|
|
"1",
|
|
"00:00:00,000 --> 00:00:14,000",
|
|
"toto",
|
|
"",
|
|
"2",
|
|
"00:01:00,000 --> 00:02:14,000",
|
|
"tata",
|
|
}, "\n")
|
|
entries, err := parseSrt(bytes.NewBuffer([]byte(document)))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
expectedEntries := []Entry{
|
|
{
|
|
Start: "00:00:00,000",
|
|
End: "00:00:14,000",
|
|
Line1: "toto",
|
|
Line2: "",
|
|
},
|
|
{
|
|
Start: "00:01:00,000",
|
|
End: "00:02:14,000",
|
|
Line1: "tata",
|
|
Line2: "",
|
|
},
|
|
}
|
|
if !reflect.DeepEqual(entries, expectedEntries) {
|
|
t.Fatalf("unexpected entries: %v", entries)
|
|
}
|
|
}
|