Fix possible memory leaks in Logic initialization
[platform/core/security/cynara.git] / test / tests.cpp
1 /*
2  * Copyright (c) 2014 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/tests.cpp
18  * @author      Aleksander Zdyb <a.zdyb@samsung.com>
19  * @version     1.0
20  * @brief       Unit-tests setup
21  */
22
23 #include <gmock/gmock.h>
24 #include <gtest/gtest.h>
25
26 #include "TestEventListenerProxy.h"
27
28 class PropertyAwarePrettyUnitTestResultPrinter : public Cynara::TestEventListenerProxy {
29     using Cynara::TestEventListenerProxy::TestEventListenerProxy;
30
31     void OnTestEnd(const ::testing::TestInfo &testInfo) {
32         auto result = testInfo.result();
33         for (int i = 0; i < result->test_property_count(); ++i) {
34             const auto &property = result->GetTestProperty(i);
35             std::cout << "             - "
36                       << property.key() << " = " << property.value()
37                       << std::endl;
38         }
39         originalListener()->OnTestEnd(testInfo);
40     }
41 };
42
43 int main(int argc, char** argv) {
44     // Disables elapsed time by default.
45     ::testing::GTEST_FLAG(print_time) = false;
46
47     // This allows the user to override the flag on the command line.
48     ::testing::InitGoogleTest(&argc, argv);
49
50     // Gets hold of the event listener list.
51     auto& listeners = ::testing::UnitTest::GetInstance()->listeners();
52
53     // Remove original listener (PrettyUnitTestResultPrinter)
54     // and wrap it with our proxy (PropertyAwarePrettyUnitTestResultPrinter)
55     auto originalListener = listeners.Release(listeners.default_result_printer());
56     listeners.Append(new PropertyAwarePrettyUnitTestResultPrinter(originalListener));
57
58     return RUN_ALL_TESTS();
59 }