Salome HOME
debug of test_export_telemac
[modules/hydro.git] / src / HYDRO_tests / TestViewer.cxx
index 6aa098d30102d561e784a52e51c7fb022bfa972f..82b05197249eff89d5a4d32b602b74da2da62cfa 100644 (file)
@@ -54,6 +54,7 @@
 #endif
 
 #include <cppunit/TestAssert.h>
+#include <QApplication>
 
 OCCViewer_ViewManager* TestViewer::myViewManager = 0;
 OCCViewer_ViewFrame* TestViewer::myViewWindow = 0;
@@ -134,6 +135,8 @@ void TestViewer::eraseAll( bool isUpdate, bool eraseStructures )
       GS->Erase();
     }
   }
+  viewer()->setTrihedronShown( false );
+  qApp->processEvents();
 }
 
 void TestViewer::show( const Handle(AIS_InteractiveObject)& theObject,
@@ -143,7 +146,7 @@ void TestViewer::show( const Handle(AIS_InteractiveObject)& theObject,
   if( !aNewKey.isEmpty() )
   {
     myKey = aNewKey;
-    eraseAll( false );
+    eraseAll( false, true );
   }
   
   if( theSelectionMode > 0 )
@@ -186,6 +189,7 @@ void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll,
   if( isFitAll )
     fitAll();
 }
+
 void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll, const char* theKey,
                        int theUIANb, int theVIANb)
 {
@@ -277,6 +281,21 @@ bool AreImagesEqual( const QImage& theImage1, const QImage& theImage2, double th
   return true;
 }
 
+QImage TestViewer::diff( const QImage& theExpectedRefImage, const QImage& theActualImage )
+{
+  const QImage::Format aFormat = QImage::Format_RGB32;
+
+  QImage anExpectedRefImage = theExpectedRefImage.convertToFormat( aFormat );
+  QImage anActualImage = theActualImage.convertToFormat( aFormat );
+
+  QImage aDiff( anExpectedRefImage.width(), anExpectedRefImage.height(), aFormat );
+  QPainter aPainter( &aDiff );
+  aPainter.drawImage( 0, 0, anExpectedRefImage );
+  aPainter.setCompositionMode( QPainter::RasterOp_SourceXorDestination );
+  aPainter.drawImage( 0, 0, anActualImage );
+  return aDiff;
+}
+
 bool TestViewer::AssertImages( QString& theMessage, const QImage* theImage, const char* theCase, bool swapRGB )
 {
   QImage anActualImage;
@@ -321,11 +340,7 @@ bool TestViewer::AssertImages( QString& theMessage, const QImage* theImage, cons
   //std::cout << anActualImage.width() << "x" << anActualImage.height() << std::endl;
   theMessage = "The viewer contents does not correspond to the reference image: " + myKey;
   
-  QImage aDiff( anExpectedRefImage.width(), anExpectedRefImage.height(), QImage::Format_ARGB32 );
-  QPainter aPainter( &aDiff );
-  aPainter.drawImage( 0, 0, anExpectedRefImage );
-  aPainter.setCompositionMode( QPainter::RasterOp_SourceXorDestination );
-  aPainter.drawImage( 0, 0, anActualImage );
+  QImage aDiff = diff( anExpectedRefImage, anActualImage );
 
   QString aDiffFilePath = temp + "/" + myKey + "_diff.png";
   aDiff.save( aDiffFilePath );
@@ -415,7 +430,11 @@ bool TestViewer::areScriptsEqual( const QString& theBaseName,
   QString anExpectedRefFilePath = REF_DATA_PATH;
   anExpectedRefFilePath += "/" + theBaseName;
   
+#ifdef WIN32
   QString anActualFilePath = QDir::tempPath() + "/" + theBaseName;
+#else
+  QString anActualFilePath = QDir::tempPath() + "/hydro/" + theBaseName;
+#endif
 
   QFile anExpected( anExpectedRefFilePath );
   QFile anActual( anActualFilePath );