58 lines
1.8 KiB
Go
58 lines
1.8 KiB
Go
package srt
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"sub-cli/internal/model"
|
|
)
|
|
|
|
func TestConvertToLyrics(t *testing.T) {
|
|
// Create test entries
|
|
entries := []model.SRTEntry{
|
|
{
|
|
Number: 1,
|
|
StartTime: model.Timestamp{Hours: 0, Minutes: 0, Seconds: 1, Milliseconds: 0},
|
|
EndTime: model.Timestamp{Hours: 0, Minutes: 0, Seconds: 4, Milliseconds: 0},
|
|
Content: "This is the first line.",
|
|
},
|
|
{
|
|
Number: 2,
|
|
StartTime: model.Timestamp{Hours: 0, Minutes: 0, Seconds: 5, Milliseconds: 0},
|
|
EndTime: model.Timestamp{Hours: 0, Minutes: 0, Seconds: 8, Milliseconds: 0},
|
|
Content: "This is the second line.",
|
|
},
|
|
{
|
|
Number: 3,
|
|
StartTime: model.Timestamp{Hours: 0, Minutes: 0, Seconds: 9, Milliseconds: 0},
|
|
EndTime: model.Timestamp{Hours: 0, Minutes: 0, Seconds: 12, Milliseconds: 0},
|
|
Content: "This is the third line.",
|
|
},
|
|
}
|
|
|
|
// Convert to Lyrics
|
|
lyrics := ConvertToLyrics(entries)
|
|
|
|
// Check result
|
|
if len(lyrics.Timeline) != 3 {
|
|
t.Errorf("Expected 3 timeline entries, got %d", len(lyrics.Timeline))
|
|
}
|
|
if len(lyrics.Content) != 3 {
|
|
t.Errorf("Expected 3 content entries, got %d", len(lyrics.Content))
|
|
}
|
|
|
|
// Check first entry
|
|
if lyrics.Timeline[0].Hours != 0 || lyrics.Timeline[0].Minutes != 0 ||
|
|
lyrics.Timeline[0].Seconds != 1 || lyrics.Timeline[0].Milliseconds != 0 {
|
|
t.Errorf("First timeline: expected 00:00:01,000, got %+v", lyrics.Timeline[0])
|
|
}
|
|
if lyrics.Content[0] != "This is the first line." {
|
|
t.Errorf("First content: expected 'This is the first line.', got '%s'", lyrics.Content[0])
|
|
}
|
|
|
|
// Check with empty entries
|
|
emptyLyrics := ConvertToLyrics([]model.SRTEntry{})
|
|
if len(emptyLyrics.Timeline) != 0 || len(emptyLyrics.Content) != 0 {
|
|
t.Errorf("Expected empty lyrics for empty entries, got %d timeline and %d content",
|
|
len(emptyLyrics.Timeline), len(emptyLyrics.Content))
|
|
}
|
|
}
|