1package ui23import (4 "strings"5 "testing"67 tea "charm.land/bubbletea/v2"8)910func TestEvaluateFormula(t *testing.T) {11 m := traceModel(t)12 m.cur = addr("A1")13 if commands["data.evaluate"].available(m) {14 t.Error("Evaluate formula on a number")15 }16 m.cur = addr("C1")17 press(t, m, "<alt+=>")18 if m.mode != modeMenu || !strings.Contains(line(m, menuLine), "EVAL") {19 t.Fatalf("mode %v:\n%s", m.mode, screen(m))20 }21 if scr := screen(m); !strings.Contains(scr, "Evaluate C1") || !strings.Contains(scr, "Next B1 = 6") {22 t.Errorf("box:\n%s", scr)23 }24 press(t, m, "<right>")25 if scr := screen(m); !strings.Contains(scr, "Evaluate C1 › B1") || !strings.Contains(scr, "=A1+SUM(A2:A3)") {26 t.Errorf("stepped in:\n%s", scr)27 }28 press(t, m, "<left>", "<enter>")29 if scr := screen(m); !strings.Contains(scr, "Value 12") {30 t.Errorf("done:\n%s", scr)31 }32 // A click outside closes it, as Esc does.33 send(m, tea.MouseClickMsg{X: 2, Y: m.height - 3, Button: tea.MouseLeft})34 if m.mode != modeReady || m.overlay != nil {35 t.Errorf("mode %v after a click outside", m.mode)36 }37 press(t, m, "<alt+=>", "<esc>")38 if m.mode != modeReady {39 t.Errorf("mode %v after Esc", m.mode)40 }41}