/*------------------------------------------------------------------------- * drawElements Quality Program Tester Core * ---------------------------------------- * * Copyright 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /*! * \file * \brief Generic main(). */ /*--------------------------------------------------------------------*/ #ifndef TCU_RANDOM_ORDER_EXECUTOR_H_ #define TCU_RANDOM_ORDER_EXECUTOR_H_ #include "tcuTestHierarchyIterator.hpp" #include "deUniquePtr.hpp" namespace tcu { class RandomOrderExecutor { public: RandomOrderExecutor(TestPackageRoot &root, TestContext &testCtx); ~RandomOrderExecutor(void); TestStatus execute(const std::string &path); private: void pruneStack(size_t newStackSize); TestCase *seekToCase(const std::string &path); TestStatus executeInner(TestCase *testCase, const std::string &casePath); struct NodeStackEntry { TestNode *node; std::vector children; NodeStackEntry(void) : node(DE_NULL) {} NodeStackEntry(TestNode *node_) : node(node_) {} }; TestContext &m_testCtx; DefaultHierarchyInflater m_inflater; std::vector m_nodeStack; de::MovePtr m_caseExecutor; }; } // tcu #endif // TCU_RANDOM_ORDER_EXECUTOR_H_