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.
Fork of mbed-os by
features/frameworks/utest/utest/utest_specification.h@0:f269e3021894, 2016-10-23 (annotated)
- Committer:
- elessair
- Date:
- Sun Oct 23 15:10:02 2016 +0000
- Revision:
- 0:f269e3021894
Initial commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| elessair | 0:f269e3021894 | 1 | /**************************************************************************** |
| elessair | 0:f269e3021894 | 2 | * Copyright (c) 2015, ARM Limited, All Rights Reserved |
| elessair | 0:f269e3021894 | 3 | * SPDX-License-Identifier: Apache-2.0 |
| elessair | 0:f269e3021894 | 4 | * |
| elessair | 0:f269e3021894 | 5 | * Licensed under the Apache License, Version 2.0 (the "License"); you may |
| elessair | 0:f269e3021894 | 6 | * not use this file except in compliance with the License. |
| elessair | 0:f269e3021894 | 7 | * You may obtain a copy of the License at |
| elessair | 0:f269e3021894 | 8 | * |
| elessair | 0:f269e3021894 | 9 | * http://www.apache.org/licenses/LICENSE-2.0 |
| elessair | 0:f269e3021894 | 10 | * |
| elessair | 0:f269e3021894 | 11 | * Unless required by applicable law or agreed to in writing, software |
| elessair | 0:f269e3021894 | 12 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| elessair | 0:f269e3021894 | 13 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| elessair | 0:f269e3021894 | 14 | * See the License for the specific language governing permissions and |
| elessair | 0:f269e3021894 | 15 | * limitations under the License. |
| elessair | 0:f269e3021894 | 16 | **************************************************************************** |
| elessair | 0:f269e3021894 | 17 | */ |
| elessair | 0:f269e3021894 | 18 | |
| elessair | 0:f269e3021894 | 19 | #ifndef UTEST_SPECIFICATION_H |
| elessair | 0:f269e3021894 | 20 | #define UTEST_SPECIFICATION_H |
| elessair | 0:f269e3021894 | 21 | |
| elessair | 0:f269e3021894 | 22 | #include <stdint.h> |
| elessair | 0:f269e3021894 | 23 | #include <stdbool.h> |
| elessair | 0:f269e3021894 | 24 | #include <stdio.h> |
| elessair | 0:f269e3021894 | 25 | #include "utest/utest_types.h" |
| elessair | 0:f269e3021894 | 26 | #include "utest/utest_case.h" |
| elessair | 0:f269e3021894 | 27 | #include "utest/utest_default_handlers.h" |
| elessair | 0:f269e3021894 | 28 | |
| elessair | 0:f269e3021894 | 29 | |
| elessair | 0:f269e3021894 | 30 | namespace utest { |
| elessair | 0:f269e3021894 | 31 | /** \addtogroup frameworks */ |
| elessair | 0:f269e3021894 | 32 | /** @{*/ |
| elessair | 0:f269e3021894 | 33 | namespace v1 { |
| elessair | 0:f269e3021894 | 34 | |
| elessair | 0:f269e3021894 | 35 | /** Test specification containing the setup and teardown handlers and test cases. |
| elessair | 0:f269e3021894 | 36 | * |
| elessair | 0:f269e3021894 | 37 | * This class simply holds the test cases and allows you to specify default handlers, and |
| elessair | 0:f269e3021894 | 38 | * override setup and teardown handlers. |
| elessair | 0:f269e3021894 | 39 | * The order of arguments is: |
| elessair | 0:f269e3021894 | 40 | * - test setup handler (optional) |
| elessair | 0:f269e3021894 | 41 | * - array of test cases (required) |
| elessair | 0:f269e3021894 | 42 | * - test teardown handler (optional) |
| elessair | 0:f269e3021894 | 43 | * - default handlers (optional) |
| elessair | 0:f269e3021894 | 44 | * |
| elessair | 0:f269e3021894 | 45 | * @note You cannot set the size of the test case array dynamically, it is template deducted at compile |
| elessair | 0:f269e3021894 | 46 | * time. Creating test specifications for unittests at runtime is explicitly not supported. |
| elessair | 0:f269e3021894 | 47 | */ |
| elessair | 0:f269e3021894 | 48 | class Specification |
| elessair | 0:f269e3021894 | 49 | { |
| elessair | 0:f269e3021894 | 50 | public: |
| elessair | 0:f269e3021894 | 51 | template< size_t N > |
| elessair | 0:f269e3021894 | 52 | Specification(const Case (&cases)[N], |
| elessair | 0:f269e3021894 | 53 | const handlers_t defaults = default_handlers) : |
| elessair | 0:f269e3021894 | 54 | setup_handler(default_handler), teardown_handler(default_handler), failure_handler(default_handler), |
| elessair | 0:f269e3021894 | 55 | cases(cases), length(N), |
| elessair | 0:f269e3021894 | 56 | defaults(defaults) |
| elessair | 0:f269e3021894 | 57 | {} |
| elessair | 0:f269e3021894 | 58 | |
| elessair | 0:f269e3021894 | 59 | template< size_t N > |
| elessair | 0:f269e3021894 | 60 | Specification(const Case (&cases)[N], |
| elessair | 0:f269e3021894 | 61 | const test_failure_handler_t failure_handler, |
| elessair | 0:f269e3021894 | 62 | const handlers_t defaults = default_handlers) : |
| elessair | 0:f269e3021894 | 63 | setup_handler(default_handler), teardown_handler(default_handler), failure_handler(failure_handler), |
| elessair | 0:f269e3021894 | 64 | cases(cases), length(N), |
| elessair | 0:f269e3021894 | 65 | defaults(defaults) |
| elessair | 0:f269e3021894 | 66 | {} |
| elessair | 0:f269e3021894 | 67 | |
| elessair | 0:f269e3021894 | 68 | template< size_t N > |
| elessair | 0:f269e3021894 | 69 | Specification(const Case (&cases)[N], |
| elessair | 0:f269e3021894 | 70 | const test_teardown_handler_t teardown_handler, |
| elessair | 0:f269e3021894 | 71 | const handlers_t defaults = default_handlers) : |
| elessair | 0:f269e3021894 | 72 | setup_handler(default_handler), teardown_handler(teardown_handler), failure_handler(default_handler), |
| elessair | 0:f269e3021894 | 73 | cases(cases), length(N), |
| elessair | 0:f269e3021894 | 74 | defaults(defaults) |
| elessair | 0:f269e3021894 | 75 | {} |
| elessair | 0:f269e3021894 | 76 | |
| elessair | 0:f269e3021894 | 77 | template< size_t N > |
| elessair | 0:f269e3021894 | 78 | Specification(const Case (&cases)[N], |
| elessair | 0:f269e3021894 | 79 | const test_teardown_handler_t teardown_handler, |
| elessair | 0:f269e3021894 | 80 | const test_failure_handler_t failure_handler, |
| elessair | 0:f269e3021894 | 81 | const handlers_t defaults = default_handlers) : |
| elessair | 0:f269e3021894 | 82 | setup_handler(default_handler), teardown_handler(teardown_handler), failure_handler(failure_handler), |
| elessair | 0:f269e3021894 | 83 | cases(cases), length(N), |
| elessair | 0:f269e3021894 | 84 | defaults(defaults) |
| elessair | 0:f269e3021894 | 85 | {} |
| elessair | 0:f269e3021894 | 86 | |
| elessair | 0:f269e3021894 | 87 | template< size_t N > |
| elessair | 0:f269e3021894 | 88 | Specification(const test_setup_handler_t setup_handler, |
| elessair | 0:f269e3021894 | 89 | const Case (&cases)[N], |
| elessair | 0:f269e3021894 | 90 | const handlers_t defaults = default_handlers) : |
| elessair | 0:f269e3021894 | 91 | setup_handler(setup_handler), teardown_handler(default_handler), failure_handler(default_handler), |
| elessair | 0:f269e3021894 | 92 | cases(cases), length(N), |
| elessair | 0:f269e3021894 | 93 | defaults(defaults) |
| elessair | 0:f269e3021894 | 94 | {} |
| elessair | 0:f269e3021894 | 95 | |
| elessair | 0:f269e3021894 | 96 | template< size_t N > |
| elessair | 0:f269e3021894 | 97 | Specification(const test_setup_handler_t setup_handler, |
| elessair | 0:f269e3021894 | 98 | const Case (&cases)[N], |
| elessair | 0:f269e3021894 | 99 | const test_failure_handler_t failure_handler, |
| elessair | 0:f269e3021894 | 100 | const handlers_t defaults = default_handlers) : |
| elessair | 0:f269e3021894 | 101 | setup_handler(setup_handler), teardown_handler(default_handler), failure_handler(failure_handler), |
| elessair | 0:f269e3021894 | 102 | cases(cases), length(N), |
| elessair | 0:f269e3021894 | 103 | defaults(defaults) |
| elessair | 0:f269e3021894 | 104 | {} |
| elessair | 0:f269e3021894 | 105 | |
| elessair | 0:f269e3021894 | 106 | template< size_t N > |
| elessair | 0:f269e3021894 | 107 | Specification(const test_setup_handler_t setup_handler, |
| elessair | 0:f269e3021894 | 108 | const Case (&cases)[N], |
| elessair | 0:f269e3021894 | 109 | const test_teardown_handler_t teardown_handler, |
| elessair | 0:f269e3021894 | 110 | const handlers_t defaults = default_handlers) : |
| elessair | 0:f269e3021894 | 111 | setup_handler(setup_handler), teardown_handler(teardown_handler), failure_handler(default_handler), |
| elessair | 0:f269e3021894 | 112 | cases(cases), length(N), |
| elessair | 0:f269e3021894 | 113 | defaults(defaults) |
| elessair | 0:f269e3021894 | 114 | {} |
| elessair | 0:f269e3021894 | 115 | |
| elessair | 0:f269e3021894 | 116 | template< size_t N > |
| elessair | 0:f269e3021894 | 117 | Specification(const test_setup_handler_t setup_handler, |
| elessair | 0:f269e3021894 | 118 | const Case (&cases)[N], |
| elessair | 0:f269e3021894 | 119 | const test_teardown_handler_t teardown_handler, |
| elessair | 0:f269e3021894 | 120 | const test_failure_handler_t failure_handler, |
| elessair | 0:f269e3021894 | 121 | const handlers_t defaults = default_handlers) : |
| elessair | 0:f269e3021894 | 122 | setup_handler(setup_handler), teardown_handler(teardown_handler), failure_handler(failure_handler), |
| elessair | 0:f269e3021894 | 123 | cases(cases), length(N), |
| elessair | 0:f269e3021894 | 124 | defaults(defaults) |
| elessair | 0:f269e3021894 | 125 | {} |
| elessair | 0:f269e3021894 | 126 | |
| elessair | 0:f269e3021894 | 127 | private: |
| elessair | 0:f269e3021894 | 128 | const test_setup_handler_t setup_handler; |
| elessair | 0:f269e3021894 | 129 | const test_teardown_handler_t teardown_handler; |
| elessair | 0:f269e3021894 | 130 | const test_failure_handler_t failure_handler; |
| elessair | 0:f269e3021894 | 131 | const Case *const cases; |
| elessair | 0:f269e3021894 | 132 | const size_t length; |
| elessair | 0:f269e3021894 | 133 | const handlers_t defaults; |
| elessair | 0:f269e3021894 | 134 | |
| elessair | 0:f269e3021894 | 135 | friend class Harness; |
| elessair | 0:f269e3021894 | 136 | }; |
| elessair | 0:f269e3021894 | 137 | |
| elessair | 0:f269e3021894 | 138 | } // namespace v1 |
| elessair | 0:f269e3021894 | 139 | } // namespace utest |
| elessair | 0:f269e3021894 | 140 | |
| elessair | 0:f269e3021894 | 141 | #endif // UTEST_SPECIFICATION_H |
| elessair | 0:f269e3021894 | 142 | |
| elessair | 0:f269e3021894 | 143 | /** @}*/ |
