# 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) "]" ; } }