test_runner = static_library(
	'test-runner',
	sources: [
		'test-runner.c',
		'test-helpers.c',
		'test-compositor.c'
	],
	include_directories: [ root_inc, src_inc ],
	dependencies: [
		cc.find_library('dl', required: false),
		dependency('threads'),
		ffi_dep,
		wayland_util_dep,
		wayland_private_dep,
		wayland_client_dep,
		wayland_server_dep
	]
)

test_runner_dep = declare_dependency(
	link_with: test_runner,
	include_directories: [ src_inc ],
	dependencies: [
		dependency('threads'),
		cc.find_library('dl', required: false)
	]
)

tests_protocol_xml = files('../protocol/tests.xml')

tests_server_protocol_h = custom_target(
	'test server protocol header',
	command: [ wayland_scanner_for_build, '-s', 'server-header', '@INPUT@', '@OUTPUT@' ],
	input: tests_protocol_xml,
	output: 'tests-server-protocol.h'
)

tests_client_protocol_c = custom_target(
	'test client protocol header',
	command: [ wayland_scanner_for_build, '-s', 'client-header', '@INPUT@', '@OUTPUT@' ],
	input: tests_protocol_xml,
	output: 'tests-client-protocol.h'
)

tests_protocol_c = custom_target(
	'test protocol source',
	command: [ wayland_scanner_for_build, '-s', 'public-code', '@INPUT@', '@OUTPUT@' ],
	input: tests_protocol_xml,
	output: 'tests-protocol.c'
)

benchmark(
	'fixed-benchmark',
	executable(
		'fixed-benchmark',
		'fixed-benchmark.c',
		dependencies: test_runner_dep
	)
)

executable(
	'exec-fd-leak-checker',
	'exec-fd-leak-checker.c',
	dependencies: test_runner_dep
)

test(
	'cpp-compile-test',
	executable(
		'cpp-compile-test',
		'cpp-compile-test.cpp',
		wayland_server_protocol_h,
		include_directories: src_inc
	)
)

sed_path = find_program('sed').path()

if get_option('scanner')
	test(
		'scanner-test',
		find_program('scanner-test.sh'),
		env: [
			'TEST_DATA_DIR=@0@/data'.format(meson.current_source_dir()),
			'TEST_OUTPUT_DIR=@0@/output'.format(meson.current_build_dir()),
			'SED=@0@'.format(sed_path),
			'WAYLAND_SCANNER=@0@'.format(wayland_scanner.full_path()),
		],
	)
endif

tests = {
	'array-test': [],
	'client-test': [ wayland_server_protocol_h ],
	'display-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
		tests_server_protocol_h,
		tests_client_protocol_c,
		tests_protocol_c,
	],
	'connection-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'event-loop-test': [ wayland_server_protocol_h ],
	'fixed-test': [],
	'interface-test': [ wayland_client_protocol_h ],
	'list-test': [],
	'map-test': [],
	'sanity-test' : [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'socket-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'queue-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'signal-test': [ wayland_server_protocol_h ],
	'newsignal-test': [
		# wayland-server.c is needed here to access wl_priv_* functions
		files('../src/wayland-server.c'),
		wayland_server_protocol_h,
	],
	'resources-test': [ wayland_server_protocol_h ],
	'message-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'compositor-introspection-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'protocol-logger-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'headers-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
		'headers-protocol-test.c',
		wayland_client_protocol_core_h,
		wayland_server_protocol_core_h,
		'headers-protocol-core-test.c',
	],
	'os-wrappers-test': [],
}

foreach test_name, test_extra_sources: tests
	test_sources = [ test_name + '.c' ] + test_extra_sources
	test_deps = [test_runner_dep]
	bin = executable(test_name, test_sources, dependencies: test_deps)
	test(
		test_name,
		bin,
		env: [
			'TEST_SRC_DIR=@0@'.format(meson.current_source_dir()),
			'TEST_BUILD_DIR=@0@'.format(meson.current_build_dir()),
		],
	)
endforeach
