Salome HOME
Copyrights update
[modules/kernel.git] / src / Utils / Test / UtilsTest.cxx
1 // Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
3 // 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either 
7 // version 2.1 of the License.
8 // 
9 // This library is distributed in the hope that it will be useful 
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 // Lesser General Public License for more details.
13 //
14 // You should have received a copy of the GNU Lesser General Public  
15 // License along with this library; if not, write to the Free Software 
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 //
18 // See http://www.salome-platform.org/
19 //
20
21 #include "UtilsTest.hxx"
22
23 #include <iostream>
24 #include <fstream>
25 #include <string>
26 #include <cstdlib>
27 #include "Utils_SALOME_Exception.hxx"
28 #include "utilities.h"
29
30 using namespace std;
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   char *theFileName = TRACEFILE;
51
52   string s = "file:";
53   s += theFileName;
54   CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
55
56   ofstream traceFile;
57   traceFile.open(theFileName, ios::out | 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       string expectedMessage = EXAMPLE_EXCEPTION_MESSAGE;
113       string actualMessage = ex.what();
114       CPPUNIT_ASSERT(actualMessage.find(expectedMessage) != string::npos);
115     }
116 }