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}