tests: implement options test

pull/311/head
Demian 4 years ago
parent e1811e100a
commit ddb943d598

@ -57,7 +57,6 @@ func (og *SendOptions) copy() *SendOptions {
if cp.ReplyMarkup != nil { if cp.ReplyMarkup != nil {
cp.ReplyMarkup = cp.ReplyMarkup.copy() cp.ReplyMarkup = cp.ReplyMarkup.copy()
} }
return &cp return &cp
} }
@ -110,17 +109,21 @@ type ReplyMarkup struct {
func (r *ReplyMarkup) copy() *ReplyMarkup { func (r *ReplyMarkup) copy() *ReplyMarkup {
cp := *r cp := *r
if len(r.ReplyKeyboard) > 0 {
cp.ReplyKeyboard = make([][]ReplyButton, len(r.ReplyKeyboard)) cp.ReplyKeyboard = make([][]ReplyButton, len(r.ReplyKeyboard))
for i, row := range r.ReplyKeyboard { for i, row := range r.ReplyKeyboard {
cp.ReplyKeyboard[i] = make([]ReplyButton, len(row)) cp.ReplyKeyboard[i] = make([]ReplyButton, len(row))
copy(cp.ReplyKeyboard[i], row) copy(cp.ReplyKeyboard[i], row)
} }
}
if len(r.InlineKeyboard) > 0 {
cp.InlineKeyboard = make([][]InlineButton, len(r.InlineKeyboard)) cp.InlineKeyboard = make([][]InlineButton, len(r.InlineKeyboard))
for i, row := range r.InlineKeyboard { for i, row := range r.InlineKeyboard {
cp.InlineKeyboard[i] = make([]InlineButton, len(row)) cp.InlineKeyboard[i] = make([]InlineButton, len(row))
copy(cp.InlineKeyboard[i], row) copy(cp.InlineKeyboard[i], row)
} }
}
return &cp return &cp
} }

@ -23,7 +23,7 @@ func TestBtn(t *testing.T) {
assert.Equal(t, &InlineButton{Text: "T", Login: &Login{Text: "T"}}, r.Login("T", &Login{Text: "T"}).Inline()) assert.Equal(t, &InlineButton{Text: "T", Login: &Login{Text: "T"}}, r.Login("T", &Login{Text: "T"}).Inline())
} }
func TestReplyInline(t *testing.T) { func TestOptions(t *testing.T) {
r := &ReplyMarkup{} r := &ReplyMarkup{}
r.Reply( r.Reply(
r.Row(r.Text("Menu")), r.Row(r.Text("Menu")),
@ -36,13 +36,28 @@ func TestReplyInline(t *testing.T) {
}, r.ReplyKeyboard) }, r.ReplyKeyboard)
i := &ReplyMarkup{} i := &ReplyMarkup{}
i.Inline(r.Row( i.Inline(i.Row(
r.Data("Previous", "prev"), i.Data("Previous", "prev"),
r.Data("Next", "next"), i.Data("Next", "next"),
)) ))
assert.Equal(t, [][]InlineButton{{ assert.Equal(t, [][]InlineButton{{
{Unique: "prev", Text: "Previous"}, {Unique: "prev", Text: "Previous"},
{Unique: "next", Text: "Next"}, {Unique: "next", Text: "Next"},
}}, i.InlineKeyboard) }}, i.InlineKeyboard)
assert.Panics(t, func() {
r.Reply(r.Row(r.Data("T", "u")))
i.Inline(i.Row(i.Text("T")))
})
assert.Equal(t, r.copy(), r)
assert.Equal(t, i.copy(), i)
o := &SendOptions{ReplyMarkup: r}
assert.Equal(t, o.copy(), o)
data, err := PollQuiz.MarshalJSON()
assert.NoError(t, err)
assert.Equal(t, []byte(`{"type":"quiz"}`), data)
} }

Loading…
Cancel
Save