#
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

config ZTEST
	bool "Zephyr testing framework"
	select TEST
	help
	  Enable the Zephyr testing framework. You should enable this only
	  if you're writing automated tests.

config ZTEST_STACKSIZE
	int "Test function thread stack size"
	depends on ZTEST
	default 1024

config ZTEST_FAIL_FAST
	bool "Abort on first failing test"
	depends on ZTEST
	help
	  Stop and abort on first failing test. Do not continue with other
	  tests that might be in the queue.

config ZTEST_ASSERT_VERBOSE
	int "Assertion verbosity level"
	depends on ZTEST
	default 1
	help
	  Set verbosity level for assertions.
	  Assertion verbosity levels:
	  0 Write only file and line for failed assertions
	  1 Write file, line number, function and reason for failed assertions
	  2 Log also successful assertions

config ZTEST_MOCKING
	bool "Mocking support functions"
	depends on ZTEST
	help
	  Enable mocking support for Ztest. This allows the test to set
	  return values and expected parameters to functions.

config ZTEST_PARAMETER_COUNT
	int "Count of parameters or return values reserved"
	depends on ZTEST_MOCKING
	default 1
	help
	  Maximum amount of concurrent return values / expected parameters.
