Trading: components 161-180

This commit is contained in:
ZacharyZhang-NY committed 2026-10-05 14:28:19 -04:00
1 parent 6f0c02d339
commit 2c40e5a89a
105 files changed
+6042 -1

No files matched your search

+94
View File
@@ -0,0 +1,94 @@
package mujica
import (
"testing"
"github.com/egoist/mygo/ui"
"mujicaui/theme"
)
type leverageProbe struct {
value float64
opts LeverageSliderOptions
applied int
}
func (p *leverageProbe) tester(density theme.Density) *ui.Tester {
return ui.NewTester(func(c *ui.Context) {
Use(c, Settings{Density: density})
ui.Column(c).Padding(10).Children(func() {
if LeverageSlider(c, &p.value, p.opts).Changed() {
p.applied++
}
})
}, 420, 200)
}
func TestLeverageSliderAppliesOnlyOnConfirm(t *testing.T) {
p := &leverageProbe{value: 5, opts: LeverageSliderOptions{Warning: 10, Danger: 50}}
tt := p.tester(theme.Default)
tt.Key(0, ui.KeyTab)
if !tt.Focused("Leverage") {
t.Fatal("slider not focusable")
}
tt.Key(0, ui.KeyRight)
if p.value != 5 || !tt.HasText("10×") || !tt.HasText("High risk") {
t.Fatalf("draft: value %v texts %q", p.value, tt.Texts())
}
tt.Key(0, ui.KeyEnd)
if !tt.HasText("Very high risk") {
t.Fatalf("danger zone: %q", tt.Texts())
}
if err := tt.Click("Apply"); err != nil {
t.Fatal(err)
}
if p.value != 100 || p.applied != 1 {
t.Fatalf("apply: %v %d", p.value, p.applied)
}
tt.Key(ui.Shift, ui.KeyTab)
tt.Key(0, ui.KeyHome)
if p.value != 100 || !tt.HasText("1×") {
t.Fatalf("home moved value: %v", p.value)
}
}
func TestLeverageSliderPointerAndHitArea(t *testing.T) {
p := &leverageProbe{value: 1, opts: LeverageSliderOptions{Levels: []float64{1, 2, 3}}}
tt := p.tester(theme.Compact)
// The track is at least 28 DIPs tall, even Compact.
tt.ClickAt(10+400-10, 70)
if !tt.HasText("3×") {
t.Fatalf("pointer: %q", tt.Texts())
}
tt.ClickAt(30, 70)
if !tt.HasText("1×") || p.applied != 0 {
t.Fatalf("pointer back: %q", tt.Texts())
}
}
func TestLeverageSliderDisabledAndBadValue(t *testing.T) {
p := &leverageProbe{value: 2, opts: LeverageSliderOptions{Disabled: true}}
tt := p.tester(theme.Default)
tt.Key(0, ui.KeyTab)
tt.Key(0, ui.KeyRight)
_ = tt.Click("Apply")
if p.value != 2 || tt.HasText("3×") || !tt.HasText("2×") {
t.Fatal("disabled slider moved")
}
defer func() {
if recover() == nil {
t.Fatal("value outside Levels accepted")
}
}()
(&leverageProbe{value: 4}).tester(theme.Default)
}
func TestLeverageSliderSnapshot(t *testing.T) {
v := 20.0
snapshot(t, "leverage_slider", 360, 160, func(c *ui.Context) {
ui.Column(c).Padding(20).Children(func() {
LeverageSlider(c, &v, LeverageSliderOptions{Warning: 10, Danger: 50})
})
})
}