| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #include <iostream>
- #include <string>
- #include <vector>
- #include "cmCTestTestHandler.h"
- struct ExpectedParseResult
- {
- std::string String;
- bool ExpectedReturnValue;
- std::vector<std::vector<cmCTestTestHandler::cmCTestTestResourceRequirement>>
- ExpectedValue;
- };
- static const std::vector<ExpectedParseResult> expectedResults{
- /* clang-format off */
- { "threads:2", true, {
- { { "threads", 2, 1 } },
- } },
- { "3,threads:2", true, {
- { { "threads", 2, 1 } },
- { { "threads", 2, 1 } },
- { { "threads", 2, 1 } },
- } },
- { "3,threads:2,gpus:4", true, {
- { { "threads", 2, 1 }, { "gpus", 4, 1 } },
- { { "threads", 2, 1 }, { "gpus", 4, 1 } },
- { { "threads", 2, 1 }, { "gpus", 4, 1 } },
- } },
- { "2,threads:2;gpus:4", true, {
- { { "threads", 2, 1 } },
- { { "threads", 2, 1 } },
- { { "gpus", 4, 1 } },
- } },
- { "threads:2;2,gpus:4", true, {
- { { "threads", 2, 1 } },
- { { "gpus", 4, 1 } },
- { { "gpus", 4, 1 } },
- } },
- { "threads:2;gpus:4", true, {
- { { "threads", 2, 1 } },
- { { "gpus", 4, 1 } },
- } },
- { "1,threads:2;0,gpus:4", true, {
- { { "threads", 2, 1 } },
- } },
- { "1,_:1", true, {
- { { "_", 1, 1 } },
- } },
- { "1,a:1", true, {
- { { "a", 1, 1 } },
- } },
- { "2", true, {
- {},
- {},
- } },
- { "1;2,threads:1", true, {
- {},
- { { "threads", 1, 1 } },
- { { "threads", 1, 1 } },
- } },
- { "1,,threads:1", true, {
- { { "threads", 1, 1 } },
- } },
- { ";1,threads:1", true, {
- { { "threads", 1, 1 } },
- } },
- { "1,threads:1;", true, {
- { { "threads", 1, 1 } },
- } },
- { "1,threads:1,", true, {
- { { "threads", 1, 1 } },
- } },
- { "threads:1;;threads:2", true, {
- { { "threads", 1, 1 } },
- { { "threads", 2, 1 } },
- } },
- { "1,", true, {
- {},
- } },
- { ";", true, {} },
- { "", true, {} },
- { ",", false, {} },
- { "1,0:1", false, {} },
- { "1,A:1", false, {} },
- { "1,a-b:1", false, {} },
- { "invalid", false, {} },
- { ",1,invalid:1", false, {} },
- { "1,1", false, {} },
- { "-1,invalid:1", false, {} },
- { "1,invalid:*", false, {} },
- { "1,invalid:-1", false, {} },
- { "1,invalid:-", false, {} },
- { "1,invalid:ab2", false, {} },
- { "1,invalid :2", false, {} },
- { "1, invalid:2", false, {} },
- { "1,invalid:ab", false, {} },
- /* clang-format on */
- };
- bool TestExpectedParseResult(const ExpectedParseResult& expected)
- {
- std::vector<std::vector<cmCTestTestHandler::cmCTestTestResourceRequirement>>
- result;
- bool retval;
- if ((retval = cmCTestTestHandler::ParseResourceGroupsProperty(
- expected.String, result)) != expected.ExpectedReturnValue) {
- std::cout << "ParseResourceGroupsProperty(\"" << expected.String
- << "\") returned " << retval << ", should be "
- << expected.ExpectedReturnValue << std::endl;
- return false;
- }
- if (result != expected.ExpectedValue) {
- std::cout << "ParseResourceGroupsProperty(\"" << expected.String
- << "\") did not yield expected set of resource groups"
- << std::endl;
- return false;
- }
- return true;
- }
- int testCTestResourceGroups(int /*unused*/, char* /*unused*/ [])
- {
- int retval = 0;
- for (auto const& expected : expectedResults) {
- if (!TestExpectedParseResult(expected)) {
- retval = 1;
- }
- }
- return retval;
- }
|