Skip to content

Assertions

Canonical source: protos/lib/test/Assertions.protos at locked revision e99b712ecf658a527b1fe82c8beba2c1286d8dc9.

// 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
}

← test family · Standard-library source