2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-15 13:02:11 +00:00
Files
build/v2/util/assert.jam
2006-11-11 22:58:18 +00:00

143 lines
3.8 KiB
Plaintext

# Copyright 2001, 2002, 2003 Dave Abrahams
# Copyright 2006 Rene Rivera
# Copyright 2002, 2003 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
import errors : error-skip-frames lol->list ;
import modules ;
# assert the equality of A and B
rule equal ( a * : b * )
{
if $(a) != $(b)
{
error-skip-frames 3 assertion failure: \"$(a)\" "!=" \"$(b)\" ;
}
}
# assert that EXPECTED is the result of calling RULE-NAME with the
# given arguments
rule result ( expected * : rule-name args * : * )
{
local result ;
module [ CALLER_MODULE ]
{
modules.poke assert : result
: [ $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ] ;
}
if $(result) != $(expected)
{
error-skip-frames 3 assertion failure: "[" $(rule-name)
[ lol->list $(args) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ]
"]"
: expected: \"$(expected)\"
: got: \"$(result)\" ;
}
}
rule .set.equal ( set1 * : set2 * )
{
if ( $(set1) in $(set2) ) && ( $(set2) in $(set1) )
{
return true ;
}
}
# assert that EXPECTED is equal to the result of calling RULE-NAME with the
# given arguments
rule result-equal ( expected * : rule-name args * : * )
{
local result ;
module [ CALLER_MODULE ]
{
modules.poke assert : result
: [ $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ] ;
}
if ! [ .set.equal $(result) : $(expected) ]
{
error-skip-frames 3 assertion failure: "[" $(rule-name)
[ lol->list $(args) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ]
"]"
: expected: \"$(expected)\"
: got: \"$(result)\" ;
}
}
# assert that the given variable is nonempty.
rule nonempty-variable ( name )
{
local value = [ modules.peek [ CALLER_MODULE ] : $(name) ] ;
if ! $(value)-is-nonempty
{
error-skip-frames 3 assertion failure: expecting non-empty variable $(variable) ;
}
}
# assert that the result of calling RULE-NAME on the given arguments
# has a true logical value (is neither an empty list nor all empty
# strings).
rule true ( rule-name args * : * )
{
local result ;
module [ CALLER_MODULE ]
{
modules.poke assert : result
: [ $(1) : $(2) : $(3) : $(4)
: $(5) : $(6) : $(7) : $(8) : $(9) ] ;
}
if ! $(result)
{
error-skip-frames 3 assertion failure: expecting true result from
"[" $(rule-name)
[ lol->list $(args) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ]
"]" ;
}
}
# assert that the result of calling RULE-NAME on the given arguments
# has a false logical value (is either an empty list or all empty
# strings).
rule false ( rule-name args * : * )
{
local result ;
module [ CALLER_MODULE ]
{
modules.poke assert : result
: [ $(1) : $(2) : $(3) : $(4)
: $(5) : $(6) : $(7) : $(8) : $(9) ] ;
}
if $(result)
{
error-skip-frames 3 assertion failure: expecting false result from
"[" $(rule-name)
[ lol->list $(args) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ]
"]" : got [ lol->list $(result) ] instead ;
}
}
# assert that 'element' is present in 'list'.
rule "in" ( element : list * )
{
if ! $(element) in $(list)
{
error-skip-frames 3 assertion failure: expecting $(element) in
"[" $(list) "]" ;
}
}
# assert that 'element' is not present in 'list'.
rule not-in ( element : list * )
{
if $(element) in $(list)
{
error-skip-frames 3 assertion failure: did not expect $(element) in
"[" $(list) "]" ;
}
}