mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-05-14 04:52:09 +02:00
110 lines
3.4 KiB
Go
110 lines
3.4 KiB
Go
package gobackend
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestItemProgressPreparingAndDownloadingStatuses(t *testing.T) {
|
|
const itemID = "progress-phase-item"
|
|
RemoveItemProgress(itemID)
|
|
defer RemoveItemProgress(itemID)
|
|
|
|
StartItemProgress(itemID)
|
|
SetItemPreparing(itemID)
|
|
|
|
if item := multiProgress.Items[itemID]; item == nil {
|
|
t.Fatal("expected item progress entry to exist")
|
|
} else {
|
|
if item.Status != itemProgressStatusPreparing {
|
|
t.Fatalf("status = %q, want %q", item.Status, itemProgressStatusPreparing)
|
|
}
|
|
if item.Progress != 0 {
|
|
t.Fatalf("progress = %v, want 0", item.Progress)
|
|
}
|
|
}
|
|
|
|
SetItemProgress(itemID, 0.37, 0, 0)
|
|
if item := multiProgress.Items[itemID]; item == nil {
|
|
t.Fatal("expected item progress entry to exist after update")
|
|
} else if item.Status != itemProgressStatusPreparing {
|
|
t.Fatalf("status after progress update = %q, want %q", item.Status, itemProgressStatusPreparing)
|
|
}
|
|
|
|
SetItemDownloading(itemID)
|
|
if item := multiProgress.Items[itemID]; item == nil {
|
|
t.Fatal("expected item progress entry to exist after downloading status")
|
|
} else if item.Status != itemProgressStatusDownloading {
|
|
t.Fatalf("status after download start = %q, want %q", item.Status, itemProgressStatusDownloading)
|
|
}
|
|
}
|
|
|
|
func TestItemProgressFinalizingAndCompletedStatuses(t *testing.T) {
|
|
const itemID = "progress-finalizing-item"
|
|
RemoveItemProgress(itemID)
|
|
defer RemoveItemProgress(itemID)
|
|
|
|
StartItemProgress(itemID)
|
|
SetItemFinalizing(itemID)
|
|
|
|
if item := multiProgress.Items[itemID]; item == nil {
|
|
t.Fatal("expected item progress entry to exist")
|
|
} else if item.Status != itemProgressStatusFinalizing {
|
|
t.Fatalf("status = %q, want %q", item.Status, itemProgressStatusFinalizing)
|
|
}
|
|
|
|
CompleteItemProgress(itemID)
|
|
if item := multiProgress.Items[itemID]; item == nil {
|
|
t.Fatal("expected item progress entry to exist after completion")
|
|
} else if item.Status != itemProgressStatusCompleted {
|
|
t.Fatalf("status = %q, want %q", item.Status, itemProgressStatusCompleted)
|
|
}
|
|
}
|
|
|
|
func TestMultiProgressDeltaResetChangedAndRemoved(t *testing.T) {
|
|
ClearAllItemProgress()
|
|
defer ClearAllItemProgress()
|
|
|
|
StartItemProgress("item-a")
|
|
SetItemBytesTotal("item-a", 1000)
|
|
|
|
var initial MultiProgressDelta
|
|
if err := json.Unmarshal([]byte(GetMultiProgressDelta(0)), &initial); err != nil {
|
|
t.Fatalf("initial delta parse failed: %v", err)
|
|
}
|
|
if !initial.Reset {
|
|
t.Fatal("initial delta should reset")
|
|
}
|
|
if initial.Seq <= 0 {
|
|
t.Fatalf("initial seq = %d, want > 0", initial.Seq)
|
|
}
|
|
if _, ok := initial.Items["item-a"]; !ok {
|
|
t.Fatal("initial delta missing item-a")
|
|
}
|
|
|
|
if delta := GetMultiProgressDelta(initial.Seq); delta != "" {
|
|
t.Fatalf("delta after same seq = %q, want empty", delta)
|
|
}
|
|
|
|
SetItemBytesReceivedWithSpeed("item-a", 256*1024, 2.5)
|
|
var changed MultiProgressDelta
|
|
if err := json.Unmarshal([]byte(GetMultiProgressDelta(initial.Seq)), &changed); err != nil {
|
|
t.Fatalf("changed delta parse failed: %v", err)
|
|
}
|
|
if changed.Reset {
|
|
t.Fatal("changed delta should not reset")
|
|
}
|
|
if _, ok := changed.Items["item-a"]; !ok {
|
|
t.Fatal("changed delta missing item-a")
|
|
}
|
|
|
|
RemoveItemProgress("item-a")
|
|
var removed MultiProgressDelta
|
|
if err := json.Unmarshal([]byte(GetMultiProgressDelta(changed.Seq)), &removed); err != nil {
|
|
t.Fatalf("removed delta parse failed: %v", err)
|
|
}
|
|
if len(removed.Removed) != 1 || removed.Removed[0] != "item-a" {
|
|
t.Fatalf("removed = %#v, want item-a", removed.Removed)
|
|
}
|
|
}
|