Salome HOME
dd34d2f13352e2bed0e2c22498f57d6c4995b4ce
[modules/kernel.git] / src / Utils / Test / UtilsTest.cxx
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 #include "UtilsTest.hxx"
23
24 #include <iostream>
25 #include <fstream>
26 #include <string>
27 #include <cstdlib>
28 #include "Utils_SALOME_Exception.hxx"
29 #include "utilities.h"
30
31
32 #define TRACEFILE "/tmp/traceUnitTest.log"
33
34 // ============================================================================
35 /*!
36  * Set Trace mecanism
37  * - delete preexisting trace classes if any
38  * - set trace on file
39  */
40 // ============================================================================
41
42 void 
43 UtilsTest::setUp()
44 {
45   LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
46   CPPUNIT_ASSERT(bp1);
47   bp1->deleteInstance(bp1);
48
49   // --- trace on file
50   const char *theFileName = TRACEFILE;
51
52   std::string s = "file:";
53   s += theFileName;
54   CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
55
56   std::ofstream traceFile;
57   traceFile.open(theFileName, std::ios::out | std::ios::app);
58   CPPUNIT_ASSERT(traceFile); // file created empty, then closed
59   traceFile.close();
60
61   bp1 = LocalTraceBufferPool::instance();
62   CPPUNIT_ASSERT(bp1);
63 }
64
65 // ============================================================================
66 /*!
67  *  - delete trace classes
68  */
69 // ============================================================================
70
71 void 
72 UtilsTest::tearDown()
73 {
74   LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
75   CPPUNIT_ASSERT(bp1);
76   bp1->deleteInstance(bp1);
77 }
78
79 int genExcept()
80 {
81   throw SALOME_Exception("a message");
82 };
83
84 // ============================================================================
85 /*!
86  * Check basic SALOME_exception mecanism
87  */
88 // ============================================================================
89
90 void
91 UtilsTest::testSALOME_ExceptionThrow()
92 {
93   CPPUNIT_ASSERT_THROW(genExcept(), SALOME_Exception);
94 }
95
96 // ============================================================================
97 /*!
98  * Check message on catch
99  */
100 // ============================================================================
101
102 void
103 UtilsTest::testSALOME_ExceptionMessage()
104 {
105 #define EXAMPLE_EXCEPTION_MESSAGE "something for the end user"
106   try
107     {
108       throw SALOME_Exception(EXAMPLE_EXCEPTION_MESSAGE);
109     }
110   catch (const SALOME_Exception &ex)
111     {
112       std::string expectedMessage = EXAMPLE_EXCEPTION_MESSAGE;
113       std::string actualMessage = ex.what();
114       CPPUNIT_ASSERT(actualMessage.find(expectedMessage) != std::string::npos);
115     }
116 }