| /* |
| * Copyright (c) 2017 Arm Limited. |
| * |
| * SPDX-License-Identifier: MIT |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a copy |
| * of this software and associated documentation files (the "Software"), to |
| * deal in the Software without restriction, including without limitation the |
| * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
| * sell copies of the Software, and to permit persons to whom the Software is |
| * furnished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included in all |
| * copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| */ |
| #ifndef ARM_COMPUTE_TEST_TESTFILTER |
| #define ARM_COMPUTE_TEST_TESTFILTER |
| |
| #include "DatasetModes.h" |
| |
| #include <regex> |
| #include <utility> |
| #include <vector> |
| |
| namespace arm_compute |
| { |
| namespace test |
| { |
| namespace framework |
| { |
| struct TestInfo; |
| |
| /** Test filter class. |
| * |
| * Stores information about which test cases are selected for execution. Based |
| * on test name and test id. |
| */ |
| class TestFilter final |
| { |
| public: |
| /** Default constructor. All tests selected. */ |
| TestFilter() = default; |
| |
| /** Constructor. |
| * |
| * The id_filter string has be a comma separated list of test ids. ... can |
| * be used to include a range of tests. For instance, "..., 15" means all |
| * test up to and including 15, "3, 6, ..., 10" means tests 3 and 6 to 10, |
| * and "15, ..." means test 15 and all following. |
| * |
| * @param[in] mode Dataset mode. |
| * @param[in] name_filter Regular expression to filter tests by name. Only matching tests will be executed. |
| * @param[in] id_filter String to match selected test ids. Only matching tests will be executed. |
| */ |
| TestFilter(DatasetMode mode, const std::string &name_filter, const std::string &id_filter); |
| |
| /** Check if a test case is selected to be executed. |
| * |
| * @param[in] info Test case info. |
| * |
| * @return True if the test case is selected to be executed. |
| */ |
| bool is_selected(const TestInfo &info) const; |
| |
| private: |
| using Ranges = std::vector<std::pair<int, int>>; |
| Ranges parse_id_filter(const std::string &id_filter) const; |
| |
| DatasetMode _dataset_mode{ DatasetMode::ALL }; |
| std::regex _name_filter{ ".*" }; |
| Ranges _id_filter{}; |
| }; |
| } // namespace framework |
| } // namespace test |
| } // namespace arm_compute |
| #endif /* ARM_COMPUTE_TEST_TESTFILTER */ |