mirror of
https://github.com/Belphemur/CBZOptimizer.git
synced 2025-10-14 12:38:50 +02:00
test: add more converter tests
This commit is contained in:
@@ -75,6 +75,11 @@ func (converter *Converter) ConvertChapter(chapter *packer2.Chapter, quality uin
|
|||||||
defer wgConvertedPages.Done()
|
defer wgConvertedPages.Done()
|
||||||
convertedPage, err := converter.convertPage(pageToConvert, quality)
|
convertedPage, err := converter.convertPage(pageToConvert, quality)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if convertedPage == nil {
|
||||||
|
errChan <- err
|
||||||
|
<-guard
|
||||||
|
return
|
||||||
|
}
|
||||||
buffer := new(bytes.Buffer)
|
buffer := new(bytes.Buffer)
|
||||||
err := png.Encode(buffer, convertedPage.Image)
|
err := png.Encode(buffer, convertedPage.Image)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -101,7 +106,7 @@ func (converter *Converter) ConvertChapter(chapter *packer2.Chapter, quality uin
|
|||||||
|
|
||||||
splitNeeded, img, format, err := converter.checkPageNeedsSplit(page)
|
splitNeeded, img, format, err := converter.checkPageNeedsSplit(page)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errChan <- fmt.Errorf("error checking if page %d of chapter %s needs split: %v", page.Index, chapter.FilePath, err)
|
errChan <- fmt.Errorf("error checking if page %d of genTestChapter %s needs split: %v", page.Index, chapter.FilePath, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +117,7 @@ func (converter *Converter) ConvertChapter(chapter *packer2.Chapter, quality uin
|
|||||||
}
|
}
|
||||||
images, err := converter.cropImage(img)
|
images, err := converter.cropImage(img)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errChan <- fmt.Errorf("error converting page %d of chapter %s to webp: %v", page.Index, chapter.FilePath, err)
|
errChan <- fmt.Errorf("error converting page %d of genTestChapter %s to webp: %v", page.Index, chapter.FilePath, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -11,42 +11,63 @@ import (
|
|||||||
|
|
||||||
func TestConvertChapter(t *testing.T) {
|
func TestConvertChapter(t *testing.T) {
|
||||||
|
|
||||||
// Load test chapter from testdata
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
genTestChapter func(path string) (*packer.Chapter, error)
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "All split pages",
|
||||||
|
genTestChapter: loadTestChapterSplit,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "No split pages",
|
||||||
|
genTestChapter: loadTestChapterNoSplit,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Mix of split and no split pages",
|
||||||
|
genTestChapter: loadTestChapterMixSplit,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
// Load test genTestChapter from testdata
|
||||||
temp, err := os.CreateTemp("", "test_chapter_*.cbz")
|
temp, err := os.CreateTemp("", "test_chapter_*.cbz")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create temporary file: %v", err)
|
t.Fatalf("failed to create temporary file: %v", err)
|
||||||
|
|
||||||
}
|
}
|
||||||
defer os.Remove(temp.Name())
|
defer os.Remove(temp.Name())
|
||||||
chapter, err := loadTestChapter(temp.Name())
|
for _, tc := range testCases {
|
||||||
if err != nil {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
t.Fatalf("failed to load test chapter: %v", err)
|
chapter, err := tc.genTestChapter(temp.Name())
|
||||||
}
|
if err != nil {
|
||||||
|
t.Fatalf("failed to load test genTestChapter: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
converter := New()
|
converter := New()
|
||||||
quality := uint8(80)
|
quality := uint8(80)
|
||||||
|
|
||||||
progress := func(msg string) {
|
progress := func(msg string) {
|
||||||
t.Log(msg)
|
t.Log(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
convertedChapter, err := converter.ConvertChapter(chapter, quality, progress)
|
convertedChapter, err := converter.ConvertChapter(chapter, quality, progress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to convert chapter: %v", err)
|
t.Fatalf("failed to convert genTestChapter: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(convertedChapter.Pages) == 0 {
|
if len(convertedChapter.Pages) == 0 {
|
||||||
t.Fatalf("no pages were converted")
|
t.Fatalf("no pages were converted")
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, page := range convertedChapter.Pages {
|
for _, page := range convertedChapter.Pages {
|
||||||
if page.Extension != ".webp" {
|
if page.Extension != ".webp" {
|
||||||
t.Errorf("page %d was not converted to webp format", page.Index)
|
t.Errorf("page %d was not converted to webp format", page.Index)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadTestChapter(path string) (*packer.Chapter, error) {
|
func loadTestChapterSplit(path string) (*packer.Chapter, error) {
|
||||||
file, err := os.Open(path)
|
file, err := os.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -74,3 +95,61 @@ func loadTestChapter(path string) (*packer.Chapter, error) {
|
|||||||
Pages: pages,
|
Pages: pages,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func loadTestChapterNoSplit(path string) (*packer.Chapter, error) {
|
||||||
|
file, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
var pages []*packer.Page
|
||||||
|
for i := 0; i < 5; i++ { // Assuming there are 5 pages for the test
|
||||||
|
img := image.NewRGBA(image.Rect(0, 0, 300, 1000))
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
err := jpeg.Encode(buf, img, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
page := &packer.Page{
|
||||||
|
Index: uint16(i),
|
||||||
|
Contents: buf,
|
||||||
|
Extension: ".jpg",
|
||||||
|
}
|
||||||
|
pages = append(pages, page)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &packer.Chapter{
|
||||||
|
FilePath: path,
|
||||||
|
Pages: pages,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadTestChapterMixSplit(path string) (*packer.Chapter, error) {
|
||||||
|
file, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
var pages []*packer.Page
|
||||||
|
for i := 0; i < 5; i++ { // Assuming there are 5 pages for the test
|
||||||
|
img := image.NewRGBA(image.Rect(0, 0, 300, 1000*(i+1)))
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
err := jpeg.Encode(buf, img, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
page := &packer.Page{
|
||||||
|
Index: uint16(i),
|
||||||
|
Contents: buf,
|
||||||
|
Extension: ".jpg",
|
||||||
|
}
|
||||||
|
pages = append(pages, page)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &packer.Chapter{
|
||||||
|
FilePath: path,
|
||||||
|
Pages: pages,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user