Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
utest_specification.h
00001 /**************************************************************************** 00002 * Copyright (c) 2015, ARM Limited, All Rights Reserved 00003 * SPDX-License-Identifier: Apache-2.0 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); you may 00006 * not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 00013 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 **************************************************************************** 00017 */ 00018 00019 #ifndef UTEST_SPECIFICATION_H 00020 #define UTEST_SPECIFICATION_H 00021 00022 #include <stdint.h> 00023 #include <stdbool.h> 00024 #include <stdio.h> 00025 #include "utest/utest_types.h" 00026 #include "utest/utest_case.h" 00027 #include "utest/utest_default_handlers.h" 00028 00029 00030 namespace utest { 00031 /** \addtogroup frameworks */ 00032 /** @{*/ 00033 namespace v1 { 00034 00035 /** Test specification containing the setup and teardown handlers and test cases. 00036 * 00037 * This class simply holds the test cases and allows you to specify default handlers, and 00038 * override setup and teardown handlers. 00039 * The order of arguments is: 00040 * - test setup handler (optional) 00041 * - array of test cases (required) 00042 * - test teardown handler (optional) 00043 * - default handlers (optional) 00044 * 00045 * @note You cannot set the size of the test case array dynamically, it is template deducted at compile 00046 * time. Creating test specifications for unittests at runtime is explicitly not supported. 00047 */ 00048 class Specification 00049 { 00050 public: 00051 template< size_t N > 00052 Specification(const Case (&cases)[N], 00053 const handlers_t defaults = default_handlers) : 00054 setup_handler(default_handler), teardown_handler(default_handler), failure_handler(default_handler), 00055 cases(cases), length(N), 00056 defaults(defaults) 00057 {} 00058 00059 template< size_t N > 00060 Specification(const Case (&cases)[N], 00061 const test_failure_handler_t failure_handler, 00062 const handlers_t defaults = default_handlers) : 00063 setup_handler(default_handler), teardown_handler(default_handler), failure_handler(failure_handler), 00064 cases(cases), length(N), 00065 defaults(defaults) 00066 {} 00067 00068 template< size_t N > 00069 Specification(const Case (&cases)[N], 00070 const test_teardown_handler_t teardown_handler, 00071 const handlers_t defaults = default_handlers) : 00072 setup_handler(default_handler), teardown_handler(teardown_handler), failure_handler(default_handler), 00073 cases(cases), length(N), 00074 defaults(defaults) 00075 {} 00076 00077 template< size_t N > 00078 Specification(const Case (&cases)[N], 00079 const test_teardown_handler_t teardown_handler, 00080 const test_failure_handler_t failure_handler, 00081 const handlers_t defaults = default_handlers) : 00082 setup_handler(default_handler), teardown_handler(teardown_handler), failure_handler(failure_handler), 00083 cases(cases), length(N), 00084 defaults(defaults) 00085 {} 00086 00087 template< size_t N > 00088 Specification(const test_setup_handler_t setup_handler, 00089 const Case (&cases)[N], 00090 const handlers_t defaults = default_handlers) : 00091 setup_handler(setup_handler), teardown_handler(default_handler), failure_handler(default_handler), 00092 cases(cases), length(N), 00093 defaults(defaults) 00094 {} 00095 00096 template< size_t N > 00097 Specification(const test_setup_handler_t setup_handler, 00098 const Case (&cases)[N], 00099 const test_failure_handler_t failure_handler, 00100 const handlers_t defaults = default_handlers) : 00101 setup_handler(setup_handler), teardown_handler(default_handler), failure_handler(failure_handler), 00102 cases(cases), length(N), 00103 defaults(defaults) 00104 {} 00105 00106 template< size_t N > 00107 Specification(const test_setup_handler_t setup_handler, 00108 const Case (&cases)[N], 00109 const test_teardown_handler_t teardown_handler, 00110 const handlers_t defaults = default_handlers) : 00111 setup_handler(setup_handler), teardown_handler(teardown_handler), failure_handler(default_handler), 00112 cases(cases), length(N), 00113 defaults(defaults) 00114 {} 00115 00116 template< size_t N > 00117 Specification(const test_setup_handler_t setup_handler, 00118 const Case (&cases)[N], 00119 const test_teardown_handler_t teardown_handler, 00120 const test_failure_handler_t failure_handler, 00121 const handlers_t defaults = default_handlers) : 00122 setup_handler(setup_handler), teardown_handler(teardown_handler), failure_handler(failure_handler), 00123 cases(cases), length(N), 00124 defaults(defaults) 00125 {} 00126 00127 private: 00128 const test_setup_handler_t setup_handler; 00129 const test_teardown_handler_t teardown_handler; 00130 const test_failure_handler_t failure_handler; 00131 const Case *const cases; 00132 const size_t length; 00133 const handlers_t defaults; 00134 00135 friend class Harness; 00136 }; 00137 00138 } // namespace v1 00139 } // namespace utest 00140 00141 #endif // UTEST_SPECIFICATION_H 00142 00143 /** @}*/
Generated on Tue Jul 12 2022 17:35:00 by
