Files
fn_registry/functions/ml/sdcli_parse_progress_test.go
egutierrez e3c8979e8d chore: auto-commit (95 archivos)
- cmd/fn/doctor.go
- cmd/fn/main.go
- cpp/apps/primitives_gallery/playground/tables/CMakeLists.txt
- cpp/apps/primitives_gallery/playground/tables/data_table.cpp
- cpp/apps/primitives_gallery/playground/tables/data_table_logic.cpp
- cpp/apps/primitives_gallery/playground/tables/data_table_logic.h
- cpp/apps/primitives_gallery/playground/tables/self_test.cpp
- cpp/apps/primitives_gallery/playground/tables/tql.cpp
- cpp/apps/primitives_gallery/playground/tables/viz.cpp
- cpp/apps/primitives_gallery/playground/tables/viz.h
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 00:50:34 +02:00

104 lines
2.6 KiB
Go

package ml
import (
"math"
"testing"
)
func TestSdcliParseProgress_StandardFormat(t *testing.T) {
line := " 3/30 | 0.84it/s | 10%"
got, ok := SdcliParseProgress(line)
if !ok {
t.Fatalf("expected match, got false")
}
if got.Step != 3 {
t.Errorf("Step: got %d, want 3", got.Step)
}
if got.TotalSteps != 30 {
t.Errorf("TotalSteps: got %d, want 30", got.TotalSteps)
}
if math.Abs(got.ItPerSec-0.84) > 1e-9 {
t.Errorf("ItPerSec: got %v, want 0.84", got.ItPerSec)
}
if math.Abs(got.Percent-10.0) > 1e-9 {
t.Errorf("Percent: got %v, want 10.0", got.Percent)
}
}
func TestSdcliParseProgress_NoMatch(t *testing.T) {
cases := []string{
"loading model...",
"",
"error: out of memory",
"clip model loaded",
"generating image...",
}
for _, line := range cases {
_, ok := SdcliParseProgress(line)
if ok {
t.Errorf("expected no match for %q, but got match", line)
}
}
}
func TestSdcliParseProgress_AltFormat(t *testing.T) {
t.Run("formato sampling verbose", func(t *testing.T) {
line := "sampling: step 3 of 30 (0.84 it/s)"
got, ok := SdcliParseProgress(line)
if !ok {
t.Fatalf("expected match, got false")
}
if got.Step != 3 {
t.Errorf("Step: got %d, want 3", got.Step)
}
if got.TotalSteps != 30 {
t.Errorf("TotalSteps: got %d, want 30", got.TotalSteps)
}
if math.Abs(got.ItPerSec-0.84) > 1e-9 {
t.Errorf("ItPerSec: got %v, want 0.84", got.ItPerSec)
}
expectedPct := 100.0 * 3.0 / 30.0
if math.Abs(got.Percent-expectedPct) > 1e-6 {
t.Errorf("Percent: got %v, want %v", got.Percent, expectedPct)
}
})
t.Run("formato step/total sin velocidad", func(t *testing.T) {
line := "progress: 15/20"
got, ok := SdcliParseProgress(line)
if !ok {
t.Fatalf("expected match, got false")
}
if got.Step != 15 {
t.Errorf("Step: got %d, want 15", got.Step)
}
if got.TotalSteps != 20 {
t.Errorf("TotalSteps: got %d, want 20", got.TotalSteps)
}
if got.ItPerSec != 0 {
t.Errorf("ItPerSec: got %v, want 0", got.ItPerSec)
}
expectedPct := 75.0
if math.Abs(got.Percent-expectedPct) > 1e-6 {
t.Errorf("Percent: got %v, want %v", got.Percent, expectedPct)
}
})
t.Run("formato con espacios variables y mayor velocidad", func(t *testing.T) {
line := " 20/30 | 12.50it/s | 66%"
got, ok := SdcliParseProgress(line)
if !ok {
t.Fatalf("expected match, got false")
}
if got.Step != 20 {
t.Errorf("Step: got %d, want 20", got.Step)
}
if got.TotalSteps != 30 {
t.Errorf("TotalSteps: got %d, want 30", got.TotalSteps)
}
if math.Abs(got.ItPerSec-12.5) > 1e-9 {
t.Errorf("ItPerSec: got %v, want 12.5", got.ItPerSec)
}
})
}