Salome HOME
update of the reference data for tests
[modules/hydro.git] / src / HYDRO_tests / TestViewer.cxx
index 8315d811ff5d02c3cfccbe535c3a6d775c89b465..d6d14bd5404acd0ea9dd40b1d62939673f4d37a4 100644 (file)
@@ -1,3 +1,20 @@
+// Copyright (C) 2014-2015  EDF-R&D
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 
 #include <TestViewer.h>
 #include <HYDROData_Tool.h>
@@ -83,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,
@@ -129,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;
@@ -218,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 );
@@ -254,3 +283,50 @@ void TestViewer::select( int theViewX, int theViewY )
   context()->MoveTo( theViewX, theViewY, aView );
   context()->Select();
 }
+
+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;
+  
+  QString anActualFilePath = QDir::tempPath() + "/" + theBaseName;
+
+  QFile anExpected( anExpectedRefFilePath );
+  QFile anActual( anActualFilePath );
+  if( !anExpected.open( QFile::ReadOnly | QFile::Text ) ||
+      !anActual.open  ( QFile::ReadOnly | QFile::Text ) )
+    return false;
+
+  for( int i=0; i<theLinesToOmit; i++ )
+    anExpected.readLine();
+
+  bool isEqual = true;
+  while( !anExpected.atEnd() && isEqual )
+  {
+    QString anExpectedLine = GetLine( anExpected, isExpectedUtf8 );
+    QString anActualLine = GetLine( anActual, isActualUtf8 );
+    isEqual = anExpectedLine == anActualLine;
+  }
+
+  if( isEqual )
+    isEqual = anActual.atEnd();
+
+  anExpected.close();
+  anActual.close();
+
+  return isEqual;
+}