message.gno
1.14 Kb ยท 41 lines
1package expect
2
3import "gno.land/p/demo/ufmt"
4
5const (
6 MessageTypeCrossPanic MessageType = "cross panic"
7 MessageTypeError = "error"
8 MessageTypePanic = "panic"
9)
10
11// MessageType defines a type for message checker errors.
12type MessageType string
13
14// NewMessageChecker creates a new checker for text messages.
15func NewMessageChecker(ctx Context, msg string, t MessageType) MessageChecker {
16 return MessageChecker{ctx, msg, t}
17}
18
19// MessageChecker asserts text messages.
20type MessageChecker struct {
21 ctx Context
22 msg string
23 msgType MessageType
24}
25
26// Not negates the next called expectation.
27func (c MessageChecker) Not() MessageChecker {
28 c.ctx.negated = !c.ctx.negated
29 return c
30}
31
32// WithMessage asserts that a message is equal to an expected message.
33func (c MessageChecker) WithMessage(msg string) {
34 c.ctx.T().Helper()
35 c.ctx.CheckExpectation(c.msg == msg, func(ctx Context) string {
36 if !ctx.IsNegated() {
37 return ufmt.Sprintf("Expected %s message to match\nGot: %s\nWant: %s", string(c.msgType), c.msg, msg)
38 }
39 return ufmt.Sprintf("Expected %s message to be different\nGot: %s", string(c.msgType), c.msg)
40 })
41}