# assert-equal expected-results... : rule-name arg1... : arg2... : ...argN ; # # Evaluates [ rule-name arg1... : arg2... : ... : argN... ] and compares the # result to expected-results. If there is a mismatch, prints an error message # and exits. rule assert-equal { local expected = $(<) ; local rulename = $(>[1]) ; if ( ! $(rulename) ) || $(rulename) = "" { report-argument-error assert-equal 1 2[1] : $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ; } local results = [ $(rulename) $(>[2-]) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ] ; if $(results) != $(<) { EXIT ******ASSERTION FAILURE******* " [ $(rulename) " $(>[2-]) ": "$(3[1]) $(3[2-]) ": "$(4[1]) $(4[2-]) ": "$(5[1]) $(5[2-]) ": "$(6[1]) $(6[2-]) ": "$(7[1]) $(7[2-]) ": "$(8[1]) $(8[2-]) ": "$(9[1]) $(9[2-]) "] expected: (" $(expected) ") result was: (" $(results) ")" ; } }