Define a base TestException class
[platform/core/test/security-tests.git] / src / framework / src / test_failed.cpp
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_failed.cpp
18  * @author      Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
19  * @version     1.0
20  * @brief       This file is the implementation file of TestFailed class
21  */
22
23 #include <cstdlib>
24 #include <cstring>
25 #include <libgen.h>
26 #include <memory>
27 #include <sstream>
28
29 #include <dpl/test/test_failed.h>
30
31 namespace DPL {
32 namespace Test {
33 namespace // anonymous
34 {
35 std::string BaseName(const std::string &aPath)
36 {
37     std::unique_ptr<char, decltype(free)*> path(strdup(aPath.c_str()), free);
38     if (!path)
39         throw std::bad_alloc();
40
41     return basename(path.get());
42 }
43 } // namespace anonymous
44
45 //! \brief Failed test message creator
46 //!
47 //! \param[in] aTest string for tested expression
48 //! \param[in] aFile source file name
49 //! \param[in] aLine source file line
50 //! \param[in] aMessage error message
51 TestFailed::TestFailed(const char* aTest,
52                        const char* aFile,
53                        int aLine,
54                        const std::string &aMessage)
55 {
56     std::ostringstream assertMsg;
57     assertMsg << "[" << BaseName(aFile) << ":" << aLine
58               << "] Assertion failed ("
59               << aTest << ") " << aMessage;
60     m_message = assertMsg.str();
61 }
62
63 } // namespace Test
64 } // namespace DPL