Salome HOME
update of the reference data for tests
[modules/hydro.git] / src / HYDRO_tests / TestViewer.cxx
index ca224f32990b288b62000e6f782488796034702f..d6d14bd5404acd0ea9dd40b1d62939673f4d37a4 100644 (file)
@@ -100,7 +100,16 @@ QColor TestViewer::GetColor(int i)
          << QColor(100,100,20) 
          << QColor(10,100,150);
   }
-  return aCV[i];
+  if (i < aCV.size())
+    return aCV[i];
+  else
+  {
+    QColor TestColor = aCV[i % aCV.size()];
+    QColor NewColor((TestColor.red() + i * 41) % 256, 
+      (TestColor.green() + i * 13) % 256, 
+      (TestColor.blue() + i * 23) % 256);
+    return NewColor;
+  }
 }
 
 void TestViewer::show( const Handle(AIS_InteractiveObject)& theObject,
@@ -146,10 +155,13 @@ void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll,
 
 void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll, const char* theKey )
 {
-  context()->CloseLocalContext();
-  context()->EraseAll( Standard_False );
-  
-  myKey = theKey;
+  QString aNewKey = theKey;
+  if( !aNewKey.isEmpty() )
+  {
+    context()->CloseLocalContext();
+    context()->EraseAll( Standard_False );
+    myKey = aNewKey;
+  }
 
   if( theShape.IsNull() )
     return;
@@ -235,12 +247,12 @@ Handle_Aspect_ColorScale TestViewer::showColorScale( bool isShow )
   if( aColorScale.IsNull() )
     return aColorScale;
 
-  Standard_Real anXPos = 0.05; //TODO
-  Standard_Real anYPos = 0.1; //TODO
-  Standard_Real aWidth = 0.2; //TODO
-  Standard_Real aHeight = 0.5; //TODO
-  Standard_Integer aTextHeight = 14; //TODO
-  Standard_Integer aNbIntervals = 30; //TODO
+  Standard_Real anXPos = 0.05;
+  Standard_Real anYPos = 0.1;
+  Standard_Real aWidth = 0.2;
+  Standard_Real aHeight = 0.5;
+  Standard_Integer aTextHeight = 14;
+  Standard_Integer aNbIntervals = 30;
 
   aColorScale->SetXPosition( anXPos );
   aColorScale->SetYPosition( anYPos );
@@ -272,7 +284,21 @@ void TestViewer::select( int theViewX, int theViewY )
   context()->Select();
 }
 
-bool TestViewer::areScriptsEqual( const QString& theBaseName )
+QString GetLine( QFile& theFile, bool isUtf8 )
+{
+  QByteArray aLineData = theFile.readLine();
+  QString aLine;
+  if( isUtf8 )
+    aLine = QString::fromUtf8( aLineData );
+  else
+    aLine = aLineData;
+  return aLine;
+}
+
+bool TestViewer::areScriptsEqual( const QString& theBaseName,
+                                  bool isExpectedUtf8,
+                                  bool isActualUtf8,
+                                  int theLinesToOmit )
 {
   QString anExpectedRefFilePath = qgetenv( "HYDRO_REFERENCE_DATA" );  
   anExpectedRefFilePath += "/" + theBaseName;
@@ -285,15 +311,14 @@ bool TestViewer::areScriptsEqual( const QString& theBaseName )
       !anActual.open  ( QFile::ReadOnly | QFile::Text ) )
     return false;
 
-  const int aLinesToOmit = 20;
-  for( int i=0; i<aLinesToOmit; i++ )
+  for( int i=0; i<theLinesToOmit; i++ )
     anExpected.readLine();
 
   bool isEqual = true;
   while( !anExpected.atEnd() && isEqual )
   {
-    QString anExpectedLine = QString::fromUtf8( anExpected.readLine() );
-    QString anActualLine = anActual.readLine();
+    QString anExpectedLine = GetLine( anExpected, isExpectedUtf8 );
+    QString anActualLine = GetLine( anActual, isActualUtf8 );
     isEqual = anExpectedLine == anActualLine;
   }