stario/io_test.go

85 lines
1.8 KiB
Go

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))
}