| /* |
| * Created by Phil on 29/10/2010. |
| * Copyright 2010 Two Blue Cubes Ltd. All rights reserved. |
| * |
| * Distributed under the Boost Software License, Version 1.0. (See accompanying |
| * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| */ |
| #ifndef TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED |
| #define TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED |
| |
| #include "catch_common.h" |
| |
| #include <string> |
| #include <vector> |
| #include <memory> |
| |
| #ifdef __clang__ |
| #pragma clang diagnostic push |
| #pragma clang diagnostic ignored "-Wpadded" |
| #endif |
| |
| namespace Catch { |
| |
| struct ITestInvoker; |
| |
| struct TestCaseInfo { |
| enum SpecialProperties{ |
| None = 0, |
| IsHidden = 1 << 1, |
| ShouldFail = 1 << 2, |
| MayFail = 1 << 3, |
| Throws = 1 << 4, |
| NonPortable = 1 << 5, |
| Benchmark = 1 << 6 |
| }; |
| |
| TestCaseInfo( std::string const& _name, |
| std::string const& _className, |
| std::string const& _description, |
| std::vector<std::string> const& _tags, |
| SourceLineInfo const& _lineInfo ); |
| |
| friend void setTags( TestCaseInfo& testCaseInfo, std::vector<std::string> tags ); |
| |
| bool isHidden() const; |
| bool throws() const; |
| bool okToFail() const; |
| bool expectedToFail() const; |
| |
| std::string tagsAsString() const; |
| |
| std::string name; |
| std::string className; |
| std::string description; |
| std::vector<std::string> tags; |
| std::vector<std::string> lcaseTags; |
| SourceLineInfo lineInfo; |
| SpecialProperties properties; |
| }; |
| |
| class TestCase : public TestCaseInfo { |
| public: |
| |
| TestCase( ITestInvoker* testCase, TestCaseInfo const& info ); |
| |
| TestCase withName( std::string const& _newName ) const; |
| |
| void invoke() const; |
| |
| TestCaseInfo const& getTestCaseInfo() const; |
| |
| bool operator == ( TestCase const& other ) const; |
| bool operator < ( TestCase const& other ) const; |
| |
| private: |
| std::shared_ptr<ITestInvoker> test; |
| }; |
| |
| TestCase makeTestCase( ITestInvoker* testCase, |
| std::string const& className, |
| std::string const& name, |
| std::string const& description, |
| SourceLineInfo const& lineInfo ); |
| } |
| |
| #ifdef __clang__ |
| #pragma clang diagnostic pop |
| #endif |
| |
| #endif // TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED |