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

config ZTEST
	bool "Zephyr testing framework"
	default n
	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
	default n
	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
	default n
	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.
