Search Apps Documentation Source Content File Folder Download Copy Actions Download

urequire.gno

5.74 Kb · 207 lines
  1// urequire is a sister package for uassert.
  2// XXX: codegen the package.
  3package urequire
  4
  5import "gno.land/p/nt/uassert/v0"
  6
  7// type TestingT = uassert.TestingT // XXX: bug, should work
  8
  9// NoError requires that a function returned no error (i.e. `nil`).
 10func NoError(t uassert.TestingT, err error, msgs ...string) {
 11	t.Helper()
 12	if uassert.NoError(t, err, msgs...) {
 13		return
 14	}
 15	t.FailNow()
 16}
 17
 18// Error requires that a function returned an error (i.e. not `nil`).
 19func Error(t uassert.TestingT, err error, msgs ...string) {
 20	t.Helper()
 21	if uassert.Error(t, err, msgs...) {
 22		return
 23	}
 24	t.FailNow()
 25}
 26
 27// ErrorContains requires that a function returned an error (i.e. not `nil`)
 28// and that the error contains the specified substring.
 29func ErrorContains(t uassert.TestingT, err error, contains string, msgs ...string) {
 30	t.Helper()
 31	if uassert.ErrorContains(t, err, contains, msgs...) {
 32		return
 33	}
 34	t.FailNow()
 35}
 36
 37// True requires that the specified value is true.
 38func True(t uassert.TestingT, value bool, msgs ...string) {
 39	t.Helper()
 40	if uassert.True(t, value, msgs...) {
 41		return
 42	}
 43	t.FailNow()
 44}
 45
 46// False requires that the specified value is false.
 47func False(t uassert.TestingT, value bool, msgs ...string) {
 48	t.Helper()
 49	if uassert.False(t, value, msgs...) {
 50		return
 51	}
 52	t.FailNow()
 53}
 54
 55// ErrorIs requires that the given error matches the target error.
 56func ErrorIs(t uassert.TestingT, err, target error, msgs ...string) {
 57	t.Helper()
 58	if uassert.ErrorIs(t, err, target, msgs...) {
 59		return
 60	}
 61	t.FailNow()
 62}
 63
 64// AbortsWithMessage requires that the code inside the specified func aborts
 65// (panics when crossing another realm).
 66// Use PanicsWithMessage for requiring local panics within the same realm.
 67// Note: This relies on gno's `revive` mechanism to catch aborts.
 68// See uassert.AbortsWithMessage for `rlm` semantics.
 69func AbortsWithMessage(t uassert.TestingT, rlm realm, msg string, f any, msgs ...string) {
 70	t.Helper()
 71	if uassert.AbortsWithMessage(t, rlm, msg, f, msgs...) {
 72		return
 73	}
 74	t.FailNow()
 75}
 76
 77// AbortsContains requires that the code inside the specified func aborts
 78// (panics when crossing another realm) and the abort message contains the specified substring.
 79// See uassert.AbortsWithMessage for `rlm` semantics.
 80func AbortsContains(t uassert.TestingT, rlm realm, substr string, f any, msgs ...string) {
 81	t.Helper()
 82	if uassert.AbortsContains(t, rlm, substr, f, msgs...) {
 83		return
 84	}
 85	t.FailNow()
 86}
 87
 88// NotAborts requires that the code inside the specified func does NOT abort
 89// when crossing an execution boundary (e.g., VM call).
 90// Use NotPanics for requiring the absence of local panics within the same realm.
 91// Note: This relies on Gno's `revive` mechanism.
 92// See uassert.AbortsWithMessage for `rlm` semantics.
 93func NotAborts(t uassert.TestingT, rlm realm, f any, msgs ...string) {
 94	t.Helper()
 95	if uassert.NotPanics(t, rlm, f, msgs...) {
 96		return
 97	}
 98	t.FailNow()
 99}
100
101// PanicsWithMessage requires that the code inside the specified func panics
102// locally within the same execution realm.
103// Use AbortsWithMessage for requiring panics that cross execution boundaries (aborts).
104// See uassert.AbortsWithMessage for `rlm` semantics.
105func PanicsWithMessage(t uassert.TestingT, rlm realm, msg string, f any, msgs ...string) {
106	t.Helper()
107	if uassert.PanicsWithMessage(t, rlm, msg, f, msgs...) {
108		return
109	}
110	t.FailNow()
111}
112
113// PanicsContains requires that the code inside the specified func panics
114// locally within the same execution realm and the panic message contains the specified substring.
115// See uassert.AbortsWithMessage for `rlm` semantics.
116func PanicsContains(t uassert.TestingT, rlm realm, substr string, f any, msgs ...string) {
117	t.Helper()
118	if uassert.PanicsContains(t, rlm, substr, f, msgs...) {
119		return
120	}
121	t.FailNow()
122}
123
124// NotPanics requires that the code inside the specified func does NOT panic
125// locally within the same execution realm.
126// Use NotAborts for requiring the absence of panics that cross execution boundaries (aborts).
127// See uassert.AbortsWithMessage for `rlm` semantics.
128func NotPanics(t uassert.TestingT, rlm realm, f any, msgs ...string) {
129	t.Helper()
130	if uassert.NotPanics(t, rlm, f, msgs...) {
131		return
132	}
133	t.FailNow()
134}
135
136// Equal requires that two objects are equal.
137func Equal(t uassert.TestingT, expected, actual any, msgs ...string) {
138	t.Helper()
139	if uassert.Equal(t, expected, actual, msgs...) {
140		return
141	}
142	t.FailNow()
143}
144
145// NotEqual requires that two objects are not equal.
146func NotEqual(t uassert.TestingT, expected, actual any, msgs ...string) {
147	t.Helper()
148	if uassert.NotEqual(t, expected, actual, msgs...) {
149		return
150	}
151	t.FailNow()
152}
153
154// Empty requires that the specified object is empty
155// (zero value, empty string/slice/map, or nil).
156func Empty(t uassert.TestingT, obj any, msgs ...string) {
157	t.Helper()
158	if uassert.Empty(t, obj, msgs...) {
159		return
160	}
161	t.FailNow()
162}
163
164// NotEmpty requires that the specified object is not empty.
165func NotEmpty(t uassert.TestingT, obj any, msgs ...string) {
166	t.Helper()
167	if uassert.NotEmpty(t, obj, msgs...) {
168		return
169	}
170	t.FailNow()
171}
172
173// Nil requires that the value is nil.
174func Nil(t uassert.TestingT, value any, msgs ...string) {
175	t.Helper()
176	if uassert.Nil(t, value, msgs...) {
177		return
178	}
179	t.FailNow()
180}
181
182// NotNil requires that the value is not nil.
183func NotNil(t uassert.TestingT, value any, msgs ...string) {
184	t.Helper()
185	if uassert.NotNil(t, value, msgs...) {
186		return
187	}
188	t.FailNow()
189}
190
191// TypedNil requires that the value is a typed-nil (nil pointer) value.
192func TypedNil(t uassert.TestingT, value any, msgs ...string) {
193	t.Helper()
194	if uassert.TypedNil(t, value, msgs...) {
195		return
196	}
197	t.FailNow()
198}
199
200// NotTypedNil requires that the value is not a typed-nil (nil pointer) value.
201func NotTypedNil(t uassert.TestingT, value any, msgs ...string) {
202	t.Helper()
203	if uassert.NotTypedNil(t, value, msgs...) {
204		return
205	}
206	t.FailNow()
207}