package stario import ( "fmt" "testing" ) func TestPromptRedrawHint(t *testing.T) { got := promptRedrawHint("头部提示\n 中文确认: ") if got != "中文确认:" { t.Fatalf("unexpected redraw hint: got %q", got) } } func TestStringDisplayWidth(t *testing.T) { got := stringDisplayWidth("中a[]") if got != 5 { t.Fatalf("unexpected display width: got %d want 5", got) } } func TestParseYesNoValue(t *testing.T) { cases := []struct { name string input string defaults bool want bool ok bool }{ {name: "default", input: " ", defaults: true, want: true, ok: true}, {name: "yes", input: "yes", defaults: false, want: true, ok: true}, {name: "no", input: "No", defaults: true, want: false, ok: true}, {name: "invalid", input: "maybe", defaults: false, want: false, ok: false}, } for _, tc := range cases { got, ok := parseYesNoValue(tc.input, tc.defaults) if got != tc.want || ok != tc.ok { t.Fatalf("%s: got (%v, %v) want (%v, %v)", tc.name, got, ok, tc.want, tc.ok) } } } func Test_Slice(t *testing.T) { var data = InputMsg{ msg: "true,false,true,true,false,0,1,hello", err: nil, skipSliceSigErr: false, } res, err := data.IgnoreSliceParseError(true).SliceBool(",") if err != nil { fmt.Println(res) t.Fatal(err) } if len(res) == 0 { t.Fatal(res) } fmt.Println(res) } func TestSliceMsg(t *testing.T) { var data = InputMsg{ msg: "", err: nil, skipSliceSigErr: false, } res, err := data.SliceString(",") if err != nil { fmt.Println(res) t.Fatal(err) } if len(res) != 0 { t.Fatal(res) } fmt.Println(len(res)) res2, err := data.SliceInt64(",") if err != nil { fmt.Println(res2) t.Fatal(err) } if len(res2) != 0 { t.Fatal(res2) } fmt.Println(len(res2)) }