mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-05 16:15:43 +00:00
65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
package download
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/GopeedLab/gopeed/internal/fetcher"
|
|
"github.com/GopeedLab/gopeed/pkg/base"
|
|
)
|
|
|
|
func TestCreateResolvedFileSelection(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name string
|
|
selection []int
|
|
submit bool
|
|
want []int
|
|
size int64
|
|
}{
|
|
{"partial", []int{2, 0}, true, []int{2, 0}, 40},
|
|
{"default all", nil, true, []int{0, 1, 2}, 60},
|
|
{"default creation options", nil, false, []int{0, 1, 2}, 60},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
manager := &generationTestManager{}
|
|
d := NewDownloader(&DownloaderConfig{FetchManagers: []fetcher.FetcherManager{manager}})
|
|
if err := d.Setup(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer d.Clear()
|
|
d.cfg.MaxRunning = 0
|
|
original := &base.Options{Path: t.TempDir()}
|
|
rr, err := d.Resolve(&base.Request{URL: "generation://selection"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
d.fetcherCache[rr.ID].Meta().Res = &base.Resource{Name: "bundle", Files: []*base.FileInfo{
|
|
{Name: "a", Size: 10}, {Name: "b", Size: 20}, {Name: "c", Size: 30},
|
|
}}
|
|
var id string
|
|
if tc.submit {
|
|
id, err = d.CreateWithOptions(rr.ID, &base.Options{Path: original.Path, SelectFiles: tc.selection})
|
|
} else {
|
|
id, err = d.CreateWithOptions(rr.ID, original)
|
|
}
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
task := d.GetTask(id)
|
|
if !reflect.DeepEqual(task.Meta.Opts.SelectFiles, tc.want) {
|
|
t.Fatalf("selection = %v, want %v", task.Meta.Opts.SelectFiles, tc.want)
|
|
}
|
|
if task.Meta.Res.Size != tc.size {
|
|
t.Fatalf("queued size = %d, want %d", task.Meta.Res.Size, tc.size)
|
|
}
|
|
var saved Task
|
|
if _, err := d.storage.Get(bucketTask, id, &saved); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if saved.Meta.Res.Size != tc.size || !reflect.DeepEqual(saved.Meta.Opts.SelectFiles, tc.want) {
|
|
t.Fatalf("persisted metadata = %+v", saved.Meta)
|
|
}
|
|
})
|
|
}
|
|
}
|