1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2018 CEA/DEN, EDF R&D
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, or (at your option) any later version.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 class TestFields(unittest.TestCase):
30 def processGuiEvents(self):
32 if salome.sg.hasDesktop():
33 salome.sg.updateObjBrowser();
35 SalomePyQt.SalomePyQt().processEvents()
37 def test_fields(self):
38 """Quick test for Fields module"""
41 print('Testing Fields module')
43 # ---- initialize Fields
44 print('... Initialize Fields module')
46 medcalc.medconsole.setConsoleGlobals(globals())
47 from medcalc.fieldproxy import FieldProxy
50 fields_root_dir = os.getenv('FIELDS_ROOT_DIR', '')
51 self.assertNotEqual(fields_root_dir, '', 'FIELDS_ROOT_DIR should be defined to load the test data')
53 print('... Load MED file')
55 file_path = os.path.join(fields_root_dir, 'share', 'salome', 'resources', 'fields', 'medcalc_testfiles', 'smallmesh_varfield.med')
56 medcalc.medio.LoadDataSource(file_path)
57 self.processGuiEvents()
59 print('... Get fields')
61 fields = medcalc.medevents.dataManager.getFieldHandlerList()
62 self.assertTrue(len(fields) >= 2) # two make this working on repeating calls
63 self.processGuiEvents()
65 # **** get first field
67 self.assertIsNotNone(field_1)
68 self.assertEqual(field_1.meshid, 0)
69 self.assertEqual(field_1.meshname, 'My2DMesh')
70 self.assertEqual(field_1.fieldname, 'testfield1')
71 self.assertEqual(field_1.type, 1)
72 self.assertEqual(field_1.iteration, 1)
73 self.assertEqual(field_1.order, 1)
74 self.assertEqual(field_1.source, 'file://'+file_path)
75 self.processGuiEvents()
77 # **** get second field
79 self.assertIsNotNone(field_2)
80 self.assertEqual(field_2.meshid, 0)
81 self.assertEqual(field_2.meshname, 'My2DMesh')
82 self.assertEqual(field_2.fieldname, 'testfield2')
83 self.assertEqual(field_2.type, 1)
84 self.assertEqual(field_2.iteration, 1)
85 self.assertEqual(field_2.order, 1)
86 self.assertEqual(field_2.source, 'file://'+file_path)
87 self.processGuiEvents()
91 # **** add two fields using field handler
92 print('... Add two fields using field handler directly')
93 add_field_1 = medcalc.fieldproxy.calculator.add(field_1, field_2)
94 self.assertIsNotNone(add_field_1)
95 self.assertEqual(add_field_1.meshid, 0)
96 self.assertEqual(add_field_1.meshname, 'My2DMesh')
97 self.assertEqual(add_field_1.fieldname, 'testfield1+testfield2')
98 self.assertEqual(add_field_1.type, 1)
99 self.assertEqual(add_field_1.iteration, 1)
100 self.assertEqual(add_field_1.order, 1)
101 self.assertEqual(add_field_1.source, 'mem://testfield1+testfield2')
102 self.processGuiEvents()
104 # **** add two fields using proxies
105 print('... Add two fields with field proxy')
106 proxy_1 = FieldProxy(field_1)
107 proxy_2 = FieldProxy(field_2)
108 add_field_2 = proxy_1 + proxy_2
109 self.assertIsNotNone(add_field_2)
110 self.assertEqual(add_field_2.meshid, 0)
111 self.assertEqual(add_field_2.meshname, 'My2DMesh')
112 self.assertEqual(add_field_2.fieldname, 'testfield1+testfield2')
113 self.assertEqual(add_field_2.type, 1)
114 self.assertEqual(add_field_2.iteration, 1)
115 self.assertEqual(add_field_2.order, 1)
116 self.assertEqual(add_field_2.source, 'mem://testfield1+testfield2')
117 self.processGuiEvents()
119 if __name__ == '__main__':