SubDir OBOS_TOP src tests kits app bapplication testapps ;

SubDirHdrs [ FDirName $(OBOS_TOP) src tests kits app common ] ;

local commonObjects = <src!tests!kits!app!common>CommonTestApp$(SUFOBJ) ;

rule SimpleBAppTestApp
{
	# SimpleBAppTestApp <sources> : <resources> : <use objects> ;
	local sources = $(1) ;
	local resources = $(2) ;
	local useObjects = $(3) ;
	local name = $(sources[1]) ;
	name = $(name:B) ;
	SimpleBAppTestApp2 $(name) : $(sources) : $(resources) : $(useObjects) ;
}

rule SimpleBAppTestApp2
{
	# SimpleBAppTestApp <name> : <sources> : <resources> : <use objects> ;
	local name = $(1) ;
	local sources = $(2) ;
	local resources = $(3) ;
	local useObjects = $(4) ;
	local r5name = $(name)_r5 ;

	local useR5Objects ;
	local object ;
	for object in $(useObjects) {
		useR5Objects += $(object:B=$(object:B)_r5) ;
	}

	if $(resources) {
		AddResources $(name) : $(resources) ;
		AddResources $(r5name) : $(resources) ;
	}
	CommonUnitTest $(name)
		: $(sources)
		: kits app
		: <boot!home!config!lib>libopenbeos.so be stdc++.r4 $(useObjects)
		: be stdc++.r4 $(useR5Objects)
		: app support
	;
}

rule CopyBAppTestApp
{
	# CopyBAppTestApp  <target> : <source> ;
	local target = $(1) ;
	local source = $(2) ;
	local r5target = $(target)_r5 ;
	local r5source = $(source)_r5 ;
	MakeLocate $(target) : [ FDirName $(OBOS_TEST_DIR) kits app ] ;
	MakeLocate $(r5target) : [ FDirName $(OBOS_TEST_DIR) kits app ] ;
	File $(target) : $(source) ;
	File $(r5target) : $(r5source) ;
	local file ;
	for file in $(target) $(r5target) {
		MODE on $(file) = $(EXEMODE) ;
		MimeSet $(file) ;
	}
}

# BApplication::BApplication() test apps
#

SimpleBAppTestApp BApplicationTestApp1.cpp ;
SimpleBAppTestApp BApplicationTestApp1a.cpp ;
SimpleBAppTestApp BApplicationTestApp1b.cpp ;
SimpleBAppTestApp BApplicationTestApp2.cpp ;
SimpleBAppTestApp BApplicationTestApp2a.cpp ;
SimpleBAppTestApp BApplicationTestApp2b.cpp ;
SimpleBAppTestApp BApplicationTestApp3.cpp ;
SimpleBAppTestApp BApplicationTestApp3a.cpp ;
SimpleBAppTestApp BApplicationTestApp3b.cpp ;
SimpleBAppTestApp BApplicationTestApp4.cpp : BApplicationTestApp4.rsrc ;
SimpleBAppTestApp BApplicationTestApp4a.cpp : BApplicationTestApp4.rsrc ;
SimpleBAppTestApp BApplicationTestApp4b.cpp : BApplicationTestApp4.rsrc ;
SimpleBAppTestApp BApplicationTestApp5.cpp : BApplicationTestApp5.rsrc ;
SimpleBAppTestApp BApplicationTestApp5a.cpp : BApplicationTestApp5.rsrc ;
SimpleBAppTestApp BApplicationTestApp5b.cpp : BApplicationTestApp5.rsrc ;


# BApplication::Run() test apps
#

local runTestApp1 = [ FGristFiles AppRunTestApp1$(SUFOBJ) ] ;

SimpleBAppTestApp AppRunTestApp1.cpp : AppRunTestApp1.rsrc
				   : $(commonObjects) ;
SimpleBAppTestApp2 AppRunTestApp2 : $(runTestApp1) : AppRunTestApp2.rsrc
				   : $(commonObjects) ;
SimpleBAppTestApp2 AppRunTestApp3 : $(runTestApp1) : AppRunTestApp3.rsrc
				   : $(commonObjects) ;
SimpleBAppTestApp2 AppRunTestApp4 : $(runTestApp1) : AppRunTestApp4.rsrc
				   : $(commonObjects) ;
SimpleBAppTestApp2 AppRunTestApp5 : $(runTestApp1) : AppRunTestApp5.rsrc
				   : $(commonObjects) ;
SimpleBAppTestApp2 AppRunTestApp6 : $(runTestApp1) : AppRunTestApp6.rsrc
				   : $(commonObjects) ;

CopyBAppTestApp AppRunTestApp3a : AppRunTestApp3 ;
CopyBAppTestApp AppRunTestApp4a : AppRunTestApp4 ;
CopyBAppTestApp AppRunTestApp5a : AppRunTestApp5 ;
CopyBAppTestApp AppRunTestApp6a : AppRunTestApp6 ;


# BApplication::Quit() test apps
#

SimpleBAppTestApp AppQuitTestApp1.cpp : : $(commonObjects) ;
SimpleBAppTestApp AppQuitTestApp2.cpp : : $(commonObjects) ;
SimpleBAppTestApp AppQuitTestApp3.cpp : : $(commonObjects) ;
SimpleBAppTestApp AppQuitTestApp4.cpp : : $(commonObjects) ;


# BApplication::QuitRequested() test apps
#

SimpleBAppTestApp AppQuitRequestedTestApp1.cpp : : $(commonObjects) ;
