From 1e84b3a1bf3b76a30ae711cfef1605d6249c8ca3 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Tue, 24 Oct 2006 16:01:20 +0000 Subject: [PATCH] (merge from head) Add result-equal test which passes when the expected and result have the same elements. [SVN r35719] --- src/util/assert.jam | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/util/assert.jam b/src/util/assert.jam index 24525d998..2c526d92a 100644 --- a/src/util/assert.jam +++ b/src/util/assert.jam @@ -36,6 +36,35 @@ rule result ( expected * : rule-name args * : * ) } } +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 ) {