Assertions
Assertions
Section titled “Assertions”Canonical source:
protos/lib/test/Assertions.protosat locked revisione99b712ecf658a527b1fe82c8beba2c1286d8dc9.
// THE LICENSED WORK IS PROVIDED UNDER THE TERMS OF THE ADAPTIVE PUBLIC LICENSE// ("LICENSE") AS FIRST COMPLETED BY: Guillermo Adrián Molina. ANY USE, PUBLIC// DISPLAY, PUBLIC PERFORMANCE, REPRODUCTION OR DISTRIBUTION OF, OR PREPARATION OF// DERIVATIVE WORKS BASED ON, THE LICENSED WORK CONSTITUTES RECIPIENT'S ACCEPTANCE// OF THIS LICENSE AND ITS TERMS, WHETHER OR NOT SUCH RECIPIENT READS THE TERMS OF// THE LICENSE. "LICENSED WORK" AND "RECIPIENT" ARE DEFINED IN THE LICENSE. A COPY// OF THE LICENSE IS LOCATED IN THE TEXT FILE ENTITLED "LICENSE.TXT" ACCOMPANYING// THE CONTENTS OF THIS FILE. IF A COPY OF THE LICENSE DOES NOT ACCOMPANY THIS// FILE, A COPY OF THE LICENSE MAY ALSO BE OBTAINED AT THE FOLLOWING WEB SITE:// https://github.com/guillermomolina/protos//// Software distributed under the License is distributed on an "AS IS" basis,// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for// the specific language governing rights and limitations under the License.
//! Assertion helpers for Protos tests.
/// The Error prototype signalled when an assertion helper fails.AssertionFailure: Error {}
/// Signals an `AssertionFailure` when `condition` is `false` and answers `null`/// when it is `true`. Any other value signals an Error.require: (condition) => { valid: condition === true (condition === false).ifTrue(() => { valid = true })
valid.ifFalse(() => { Error().signal() })
condition.ifFalse(() => { failure: AssertionFailure {} failure.signal() })
null}
/// Runs `body` and answers the Error it signals when that Error is handled by/// `errorPrototype`; signals an `AssertionFailure` when no such Error is/// signalled.signals: (errorPrototype, body) => { caught: null matched: false
errorPrototype.handle( body, (error) => { caught = error matched = true error } )
matched.ifFalse(() => { failure: AssertionFailure {} failure.signal() })
caught}