]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
refs #651: dump python -- functionality and test
authorasl <asl@opencascade.com>
Mon, 26 Oct 2015 10:12:40 +0000 (13:12 +0300)
committerasl <asl@opencascade.com>
Mon, 26 Oct 2015 10:12:40 +0000 (13:12 +0300)
src/HYDROData/HYDROData_StricklerTable.cxx
src/HYDROPy/HYDROData_StricklerTable.sip
src/HYDRO_tests/TestViewer.cxx
src/HYDRO_tests/TestViewer.h
src/HYDRO_tests/reference_data/st_dump.py [new file with mode: 0644]
src/HYDRO_tests/test_HYDROData_StricklerTable.cxx

index 9a583a949bd8c5503f03d7dfeb7e533050357bc3..b2901ef51abebc2cbfc935850ce893572c5e8b69 100644 (file)
@@ -208,15 +208,26 @@ QStringList HYDROData_StricklerTable::DumpToPython( MapOfTreatedObjects& theTrea
   QStringList aResList = dumpObjectCreation( theTreatedObjects );
   QString aPyName = GetObjPyName();
 
+  QString anAttrName = GetAttrName();
+  aResList << QString( "%1.SetAttrName( \"%2\" );" ).arg( aPyName ).arg( anAttrName );
+
   aResList << QString( "" );
   Handle(TDataStd_NamedData) aMap = Map();
   if( !aMap.IsNull() )
   {
     for( TDataStd_DataMapIteratorOfDataMapOfStringReal it( aMap->GetRealsContainer() ); it.More(); it.Next() )
     {
-      TCollection_ExtendedString aType = it.Key();
+      QString aType = HYDROData_Tool::toQString( it.Key() );
       Standard_Real aValue = it.Value();
-      aResList << QString( "%1.Set( \"%2\", %3 );" ).arg( aPyName ).arg( QString( (QChar*)aType.ToExtString(), aType.Length() ) ).arg( aValue );
+      aResList << QString( "%1.Set( u\"%2\", %3 );" ).arg( aPyName ).arg( aType ).arg( aValue );
+
+      QString anAttrValue = GetAttrValue( aType );
+      aResList << QString( "%1.SetAttrValue( u\"%2\", \"%3\" );" ).arg( aPyName ).arg( aType ).arg( anAttrValue );
+      
+      QColor aColor = GetColor( aType );
+      aResList << QString( "%1.SetColor( u\"%2\", QColor( %3, %4, %5 ) );" ).
+        arg( aPyName ).arg( aType ).arg( aColor.red() ).arg( aColor.green() ).arg( aColor.blue() );
+      aResList << QString();
     }
   }
   aResList << QString( "" );
index a6493486c68d7f06215f24f64c14f912d6c4f067..01fe3353970e2e4934a0fba5c1d1ac5ce82f4cbe 100644 (file)
@@ -47,7 +47,16 @@ public:
   bool Export( const QString& theFileName );
 
   double Get( const QString& theType, double theDefault ) const;
-  void Set( const QString& theType, double theCoefficient );
+  void   Set( const QString& theType, double theCoefficient );
+
+  QString GetAttrName() const;
+  bool    SetAttrName( const QString& ) const;
+
+  QString GetAttrValue( const QString& theType ) const;
+  void    SetAttrValue( const QString& theType, const QString& theAttrValue ) const;
+
+  QColor GetColor( const QString& theType ) const;
+  void   SetColor( const QString& theType, const QColor& theColor ) const;
 
   QStringList GetTypes() const;
 
index a7dd45d64fce53e0f8c1734b6b56766ec5daad6a..ca224f32990b288b62000e6f782488796034702f 100644 (file)
@@ -271,3 +271,37 @@ void TestViewer::select( int theViewX, int theViewY )
   context()->MoveTo( theViewX, theViewY, aView );
   context()->Select();
 }
+
+bool TestViewer::areScriptsEqual( const QString& theBaseName )
+{
+  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;
+
+  const int aLinesToOmit = 20;
+  for( int i=0; i<aLinesToOmit; i++ )
+    anExpected.readLine();
+
+  bool isEqual = true;
+  while( !anExpected.atEnd() && isEqual )
+  {
+    QString anExpectedLine = QString::fromUtf8( anExpected.readLine() );
+    QString anActualLine = anActual.readLine();
+    isEqual = anExpectedLine == anActualLine;
+  }
+
+  if( isEqual )
+    isEqual = anActual.atEnd();
+
+  anExpected.close();
+  anActual.close();
+
+  return isEqual;
+}
index 897368d90ecbcb9f539a7962fd79a341dcbc242b..a3130ad35c04d01f6bd6a363268e02e4b499e164 100644 (file)
@@ -45,6 +45,8 @@ public:
 
   static void select( int theViewX, int theViewY );
 
+  static bool areScriptsEqual( const QString& theBaseName );
+
 private:
   static OCCViewer_ViewManager* myViewManager;
   static OCCViewer_ViewWindow* myViewWindow;
@@ -61,3 +63,8 @@ private:
     }                                                      \
   }                                                        \
 
+#define CPPUNIT_ASSERT_SCRIPTS_EQUAL( theBaseName )        \
+  if( !TestViewer::areScriptsEqual( theBaseName ) )        \
+    CPPUNIT_FAIL( "Scripts are not equal" );               \
+
+
diff --git a/src/HYDRO_tests/reference_data/st_dump.py b/src/HYDRO_tests/reference_data/st_dump.py
new file mode 100644 (file)
index 0000000..4212740
--- /dev/null
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+
+###
+### This file is generated automatically by SALOME v7.6.0 with dump python functionality
+###
+
+import sys
+import salome
+
+salome.salome_init()
+theStudy = salome.myStudy
+
+import salome_notebook
+notebook = salome_notebook.NoteBook(theStudy)
+sys.path.insert( 0, r'D:/asl/hydro/studies')
+
+###
+### HYDRO component
+###
+
+from HYDROPy import *
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+
+hydro_doc = HYDROData_Document.Document( theStudy._get_StudyId() );
+
+hydro_doc.SetLocalCS( 0, 0 )
+
+ST = hydro_doc.CreateObject( KIND_STRICKLER_TABLE );
+ST.SetName( "ST" );
+
+ST.SetAttrName( "CODE_06" );
+
+ST.Set( u"Zones de champs, prairies, sans cultures", 20 );
+ST.SetAttrValue( u"Zones de champs, prairies, sans cultures", "511" );
+ST.SetColor( u"Zones de champs, prairies, sans cultures", QColor( 255, 0, 0 ) );
+
+ST.Set( u"Zones à faible urbanization (bourg)", 9 );
+ST.SetAttrValue( u"Zones à faible urbanization (bourg)", "" );
+ST.SetColor( u"Zones à faible urbanization (bourg)", QColor( 0, 0, 255 ) );
+
+ST.Set( u"Zones de champs cultivé à végétation haute", 12.5 );
+ST.SetAttrValue( u"Zones de champs cultivé à végétation haute", "" );
+ST.SetColor( u"Zones de champs cultivé à végétation haute", QColor( 0, 255, 0 ) );
+
+ST.Set( u"Canaux artificiels en béton", 65 );
+ST.SetAttrValue( u"Canaux artificiels en béton", "" );
+ST.SetColor( u"Canaux artificiels en béton", QColor( 136, 136, 136 ) );
+
+ST.Set( u"Canaux naturels", 35 );
+ST.SetAttrValue( u"Canaux naturels", "" );
+ST.SetColor( u"Canaux naturels", QColor( 255, 0, 255 ) );
+
+ST.Set( u"Zones à forte urbanization (agglomération)", 9 );
+ST.SetAttrValue( u"Zones à forte urbanization (agglomération)", "" );
+ST.SetColor( u"Zones à forte urbanization (agglomération)", QColor( 18, 52, 86 ) );
+
+ST.Set( u"Zones de champs cultivé à végétation basse", 17.5 );
+ST.SetAttrValue( u"Zones de champs cultivé à végétation basse", "512" );
+ST.SetColor( u"Zones de champs cultivé à végétation basse", QColor( 255, 255, 0 ) );
+
+ST.Set( u"Zones d'arbustes, de sous-bois", 10 );
+ST.SetAttrValue( u"Zones d'arbustes, de sous-bois", "" );
+ST.SetColor( u"Zones d'arbustes, de sous-bois", QColor( 0, 255, 255 ) );
+
+
+ST.Update();
+
index acdc7a4bb34bce898ceac5c2d36aa2563077a6ed..3c013483feaca904e0d5f33d71fc07d80137a161 100644 (file)
@@ -21,6 +21,7 @@
 #include <HYDROData_Iterator.h>
 #include <HYDROData_StricklerTable.h>
 #include <HYDROData_Tool.h>
+#include <TestViewer.h>
 #include <QStringList>
 #include <QColor>
 #include <QDir>
@@ -200,5 +201,17 @@ void test_HYDROData_StricklerTable::test_duplication_refs_613()
 
 void test_HYDROData_StricklerTable::test_dump_python()
 {
-  //TODO
+  Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
+
+  Handle(HYDROData_StricklerTable) aTable =
+    Handle(HYDROData_StricklerTable)::DownCast( aDoc->CreateObject( KIND_STRICKLER_TABLE ) );
+  aTable->SetName( "ST" );
+  CPPUNIT_ASSERT_EQUAL( true, aTable->Import( DEF_STR_PATH ) );
+
+  QString aTmpPath = QDir::tempPath() + "/st_dump.py";
+  CPPUNIT_ASSERT_EQUAL( true, aDoc->DumpToPython( aTmpPath, false ) );
+  
+  CPPUNIT_ASSERT_SCRIPTS_EQUAL( "st_dump.py" );
+
+  aDoc->Close();
 }