/* * Copyright (C) Internet Systems Consortium, Inc. ("ISC") * * SPDX-License-Identifier: MPL-2.0 * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, you can obtain one at https://mozilla.org/MPL/2.0/. * * See the COPYRIGHT file distributed with this work for additional * information regarding copyright ownership. */ /*! \file isc/cmocka.h */ #pragma once #include #include ISC_LANG_BEGINDECLS /* * Copy the test identified by 'name' from 'tests' to 'selected'. */ #define cmocka_add_test_byname(tests, name, selected) \ _cmocka_add_test_byname(tests, sizeof(tests) / sizeof(tests[0]), name, \ selected, \ sizeof(selected) / sizeof(selected[0])) static inline bool _cmocka_add_test_byname(const struct CMUnitTest *tests, size_t ntests, const char *name, struct CMUnitTest *selected, size_t nselected) { size_t i, j; for (i = 0; i < ntests && tests[i].name != NULL; i++) { if (strcmp(tests[i].name, name) != 0) { continue; } for (j = 0; j < nselected && selected[j].name != NULL; j++) { if (strcmp(tests[j].name, name) == 0) { break; } } if (j < nselected && selected[j].name == NULL) { selected[j] = tests[i]; } return (true); } return (false); } ISC_LANG_ENDDECLS