# -*- makefile -*- # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this file, # You can obtain one at http://mozilla.org/MPL/2.0/. ifdef VERBOSE $(warning loading test) endif $(call requiredfunction,getargv) $(call requiredfunction,subargv) $(call requiredfunction,istype isval isvar) # arg_scalar = [scalar|literal] arg_list = foo bar arg_ref = arg_list ## Identify type of function argument(s) ######################################## ifneq (scalar,$(call istype,arg_scalar)) $(error istype(arg_scalar)=scalar, found [$(call istype,arg_scalar)]) endif ifneq (list,$(call istype,arg_list)) $(error istype(arg_list)=list, found [$(call istype,arg_list)]) endif ifneq (list,$(call istype,arg_ref)) $(error istype(arg_ref)=list, found [$(call istype,arg_ref)]) endif ## Type == scalar or a list of values ##################################### ifneq (true,$(call isval,scalar)) $(error isval(scalar)=true, found [$(call isval,scalar)]) endif ifneq ($(NULL),$(call isval,arg_list)) $(error isval(arg_list)=null, found [$(call isval,arg_list)]) endif ## type == reference: macro=>macro => $($(1)) ############################################# ifneq ($(NULL),$(call isvar,scalar)) $(error isvar(scalar)=$(NULL), found [$(call isvar,scalar)]) endif ifneq (true,$(call isvar,arg_list)) $(error isvar(arg_list)=true, found [$(call isvar,arg_list)]) endif ifneq (true,$(call isvar,arg_ref)) $(error isvar(arg_ref)=true, found [$(call isvar,arg_ref)]) endif # Verify getargv expansion ########################## ifneq (scalar,$(call getargv,scalar)) $(error getargv(scalar)=scalar, found [$(call getargv,scalar)]) endif ifneq ($(arg_list),$(call getargv,arg_list)) $(error getargv(arg_list)=list, found [$(call getargv,arg_list)]) endif ifneq (arg_list,$(call getargv,arg_ref)) $(error getargv(arg_ref)=list, found [$(call getargv,arg_ref)]) endif ########################################################################### ## ########################################################################### ifdef MANUAL_TEST #{ # For automated testing a callback is needed that can set an external status # variable that can be tested. Syntax is tricky to get correct functionality. ifdef VERBOSE $(info ) $(info ===========================================================================) $(info Running test: checkIfEmpty) $(info ===========================================================================) endif #status = #setTRUE =status=true #setFALSE =status=$(NULL) #$(call checkIfEmpty,setFALSE NULL) #$(if $(status),$(error checkIfEmpty(xyz) failed)) #$(call checkIfEmpty,setTRUE xyz) #$(if $(status),$(error checkIfEmpty(xyz) failed)) xyz=abc $(info STATUS: warnIfEmpty - two vars) $(call warnIfEmpty,foo xyz bar) $(info STATUS: errorIfEmpty - on first var) $(call errorIfEmpty,foo xyz bar) $(error TEST FAILED: processing should not reach this point) endif #} # Verify subargv expansion ########################## subargs=foo bar tans fans subargs_exp=tans fans subargs_found=$(call subargv,4,$(subargs)) ifneq ($(subargs_exp),$(subargs_found)) $(error subargv(4,$(subargs)): expected [$(subargs_exp)] found [$(subargs_found)]) endif