srt_to_yaml/main_test.go
Florian Maury ea2e600063 initial
2024-10-27 11:15:53 +01:00

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)
}
}