menuconfig UNIT_TEST
	bool "Unit tests"
	help
	  Select this to compile in unit tests for various parts of
	  U-Boot. Test suites will be subcommands of the "ut" command.
	  This does not require sandbox to be included, but it is most
	  often used there.

config SPL_UNIT_TEST
	bool "Unit tests in SPL"
	depends on SPL
	# We need to be able to unbind devices for tests to work
	select SPL_DM_DEVICE_REMOVE
	help
	  Select this to enable unit tests in SPL. Most test are designed for
	  running in U-Boot proper, but some are intended for SPL, such as
	  of-platdata and SPL handover. To run these tests with the sandbox_spl
	  board, use the -u (unit test) option.

config UT_LIB
	bool "Unit tests for library functions"
	depends on UNIT_TEST
	default y if !SANDBOX_VPL
	help
	  Enables the 'ut lib' command which tests library functions like
	  memcat(), memcyp(), memmove() and ASN1 compiler/decoder.

if UT_LIB

config UT_LIB_ASN1
	bool "Unit test for asn1 compiler and decoder function"
	default y
	imply ASYMMETRIC_KEY_TYPE
	imply ASYMMETRIC_PUBLIC_KEY_SUBTYPE
	imply X509_CERTIFICATE_PARSER
	imply PKCS7_MESSAGE_PARSER
	imply RSA_PUBLIC_KEY_PARSER
	help
	  Enables a test which exercises asn1 compiler and decoder function
	  via various parsers.

config UT_LIB_CRYPT
	bool "Unit test for crypt-style password hashing"
	depends on !SPL && AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION
	default y
	select CRYPT_PW
	select CRYPT_PW_SHA256
	select CRYPT_PW_SHA512
	help
	  Enables a test for the crypt-style password hash functions.

config UT_LIB_RSA
	bool "Unit test for rsa_verify() function"
	depends on RSA
	depends on RSA_VERIFY_WITH_PKEY
	select IMAGE_SIGN_INFO
	default y
	help
	  Enables rsa_verify() test, currently rsa_verify_with_pkey only()
	  only, at the 'ut lib' command.

endif

config UT_COMPRESSION
	bool "Unit test for compression"
	depends on UNIT_TEST
	depends on CMDLINE && GZIP_COMPRESSED && BZIP2 && LZMA && LZO && LZ4
	default y
	help
	  Enables tests for compression and decompression routines for simple
	  sanity and for buffer overflow conditions.

config UT_LOG
	bool "Unit tests for logging functions"
	depends on UNIT_TEST
	default y
	help
	  Enables the 'ut log' command which tests logging functions like
	  log_err().
	  See also CONFIG_LOG_TEST which provides the 'log test' command.

config UT_TIME
	bool "Unit tests for time functions"
	depends on UNIT_TEST
	help
	  Enables the 'ut time' command which tests that the time functions
	  work correctly. The test is fairly simple and will not catch all
	  problems. But if you are having problems with udelay() and the like,
	  this is a good place to start.

config UT_UNICODE
	bool "Unit tests for Unicode functions"
	depends on UNIT_TEST
	default y
	select CHARSET
	help
	  Enables the 'ut unicode' command which tests that the functions for
	  manipulating Unicode strings work correctly.

source "test/dm/Kconfig"
source "test/env/Kconfig"
source "test/lib/Kconfig"
source "test/optee/Kconfig"
source "test/overlay/Kconfig"
