e3c8979e8d
- 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>
104 lines
2.6 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|