uboot/include/test/test.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Copyright (c) 2013 Google, Inc.
   4 */
   5
   6#ifndef __TEST_TEST_H
   7#define __TEST_TEST_H
   8
   9#include <malloc.h>
  10
  11/*
  12 * struct unit_test_state - Entire state of test system
  13 *
  14 * @fail_count: Number of tests that failed
  15 * @start: Store the starting mallinfo when doing leak test
  16 * @priv: A pointer to some other info some suites want to track
  17 * @of_root: Record of the livetree root node (used for setting up tests)
  18 * @expect_str: Temporary string used to hold expected string value
  19 * @actual_str: Temporary string used to hold actual string value
  20 */
  21struct unit_test_state {
  22        int fail_count;
  23        struct mallinfo start;
  24        void *priv;
  25        struct device_node *of_root;
  26        char expect_str[256];
  27        char actual_str[256];
  28};
  29
  30/**
  31 * struct unit_test - Information about a unit test
  32 *
  33 * @name: Name of test
  34 * @func: Function to call to perform test
  35 * @flags: Flags indicated pre-conditions for test
  36 */
  37struct unit_test {
  38        const char *file;
  39        const char *name;
  40        int (*func)(struct unit_test_state *state);
  41        int flags;
  42};
  43
  44/**
  45 * UNIT_TEST() - create linker generated list entry for unit a unit test
  46 *
  47 * The macro UNIT_TEST() is used to create a linker generated list entry. These
  48 * list entries are enumerate tests that can be execute using the ut command.
  49 * The list entries are used both by the implementation of the ut command as
  50 * well as in a related Python test.
  51 *
  52 * For Python testing the subtests are collected in Python function
  53 * generate_ut_subtest() by applying a regular expression to the lines of file
  54 * u-boot.sym. The list entries have to follow strict naming conventions to be
  55 * matched by the expression.
  56 *
  57 * Use UNIT_TEST(foo_test_bar, _flags, foo_test) for a test bar in test suite
  58 * foo that can be executed via command 'ut foo bar' and is implemented in
  59 * function foo_test_bar().
  60 *
  61 * @_name:      concatenation of name of the test suite, "_test_", and the name
  62 *              of the test
  63 * @_flags:     an integer field that can be evaluated by the test suite
  64 *              implementation
  65 * @_suite:     name of the test suite concatenated with "_test"
  66 */
  67#define UNIT_TEST(_name, _flags, _suite)                                \
  68        ll_entry_declare(struct unit_test, _name, _suite) = {           \
  69                .file = __FILE__,                                       \
  70                .name = #_name,                                         \
  71                .flags = _flags,                                        \
  72                .func = _name,                                          \
  73        }
  74
  75/* Sizes for devres tests */
  76enum {
  77        TEST_DEVRES_SIZE        = 100,
  78        TEST_DEVRES_COUNT       = 10,
  79        TEST_DEVRES_TOTAL       = TEST_DEVRES_SIZE * TEST_DEVRES_COUNT,
  80
  81        /* A few different sizes */
  82        TEST_DEVRES_SIZE2       = 15,
  83        TEST_DEVRES_SIZE3       = 37,
  84};
  85
  86#endif /* __TEST_TEST_H */
  87