Files
fn_registry/functions/datascience/metrics_drift_test.go
T
egutierrez 750b7abcd5 chore: auto-commit (97 archivos)
- .claude/CLAUDE.md
- .claude/agents/fn-recopilador/SKILL.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- bash/functions/infra/build_cpp_windows.sh
- cpp/CMakeLists.txt
- cpp/PATTERNS.md
- cpp/framework/app_base.cpp
- cpp/framework/app_base.h
- dev/issues/README.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:11:24 +02:00

48 lines
1.5 KiB
Go

package datascience
import (
"math"
"testing"
)
func TestMetricsDrift(t *testing.T) {
t.Run("historico vacio retorna drift 0 baseline 0", func(t *testing.T) {
drift, baseline := MetricsDrift([]int64{}, 100, 0.5)
if drift != 0 || baseline != 0 {
t.Errorf("expected drift=0 baseline=0, got drift=%v baseline=%v", drift, baseline)
}
})
t.Run("baseline cero retorna drift 0 baseline 0", func(t *testing.T) {
// todos ceros -> percentil = 0 -> baseline = 0
drift, baseline := MetricsDrift([]int64{0, 0, 0}, 50, 0.5)
if drift != 0 || baseline != 0 {
t.Errorf("expected drift=0 baseline=0 when baseline is zero, got drift=%v baseline=%v", drift, baseline)
}
})
t.Run("drift positivo cuando current supera baseline", func(t *testing.T) {
// historico: [100,100,100,100,100], mediana=100
// current=147 -> drift=0.47
drift, baseline := MetricsDrift([]int64{100, 100, 100, 100, 100}, 147, 0.5)
if baseline != 100 {
t.Errorf("expected baseline=100, got %v", baseline)
}
if math.Abs(drift-0.47) > 1e-9 {
t.Errorf("expected drift=0.47, got %v", drift)
}
})
t.Run("drift negativo cuando current es menor que baseline", func(t *testing.T) {
// historico: [200,200,200], mediana=200
// current=100 -> drift=-0.5
drift, baseline := MetricsDrift([]int64{200, 200, 200}, 100, 0.5)
if baseline != 200 {
t.Errorf("expected baseline=200, got %v", baseline)
}
if math.Abs(drift-(-0.5)) > 1e-9 {
t.Errorf("expected drift=-0.5, got %v", drift)
}
})
}