Merge branch 'tizen' into cynara
[platform/core/test/security-tests.git] / src / framework / include / dpl / test / test_case.h
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /*
17  * @file        test_case.h
18  * @author      Marcin Niesluchowski (m.niesluchow@samsung.com)
19  * @version     1.0
20  * @brief       This file is the header file of TestCase class
21  */
22
23 #ifndef DPL_TEST_CASE_H
24 #define DPL_TEST_CASE_H
25
26 #include <string>
27 #include <set>
28 #include <memory>
29
30 #include <dpl/test/performance_result.h>
31
32 namespace DPL {
33 namespace Test {
34
35 class TestCase
36 {
37 public:
38     TestCase(const std::string &name)
39         : m_name(name) {}
40     virtual ~TestCase() {}
41
42     bool operator <(const TestCase &other) const {
43         return m_name < other.m_name;
44     }
45     bool operator ==(const TestCase &other) const {
46         return m_name == other.m_name;
47     }
48
49     const std::string& GetName() const {
50         return m_name;
51     }
52     PerformanceResultPtr GetPerformance() const {
53         return m_performance;
54     }
55     void SetPerformance(PerformanceResultPtr performance) {
56         m_performance = performance;
57     }
58
59     virtual void Test() = 0;
60     virtual void Init() = 0;
61     virtual void Finish() = 0;
62
63 private:
64     std::string m_name;
65     PerformanceResultPtr m_performance;
66 };
67
68 typedef std::shared_ptr<TestCase> TestCasePtr;
69 typedef std::list<TestCasePtr> TestCaseSet;
70
71 } // namespace Test
72 } // namespace DPL
73
74 #endif // DPL_TEST_CASE_H