package mcp import ( "math" "strings" "testing" ) func TestEvalArith(t *testing.T) { cases := map[string]float64{ "1+2*3": 7, "(1+2)*3": 9, "2^3^2": 512, // 右结合 "-3+5": 2, "10/4": 2.5, "10%3": 1, "2*(3+4)-5": 9, "-(2+3)*2": -10, "3.5e1+0.5": 35.5, } for in, want := range cases { got, err := evalArith(in) if err != nil { t.Errorf("evalArith(%q) 报错: %v", in, err) continue } if math.Abs(got-want) > 1e-9 { t.Errorf("evalArith(%q)=%v want %v", in, got, want) } } } func TestEvalArithErrors(t *testing.T) { for _, in := range []string{"1/0", "1+", "(1+2", "1+2)", "rm -rf /", "import os", ""} { if _, err := evalArith(in); err == nil { t.Errorf("evalArith(%q) 应报错但没有", in) } } } func TestHTMLToText(t *testing.T) { in := `
第一段&符号