Salome HOME
Updated copyright comment
[modules/med.git] / src / MEDCalc / tui / fields_test.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2018-2024  CEA, EDF
3 #
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.
8 #
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.
13 #
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
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 import os
22 import unittest
23
24 class TestFields(unittest.TestCase):
25
26     def setUp(self):
27         import salome
28         salome.salome_init()
29
30     def processGuiEvents(self):
31         import salome
32         if salome.sg.hasDesktop():
33             salome.sg.updateObjBrowser();
34             import SalomePyQt
35             SalomePyQt.SalomePyQt().processEvents()
36
37     def test_fields(self):
38         """Quick test for Fields module"""
39
40         print()
41         print('Testing Fields module')
42
43         # ---- initialize Fields
44         print('... Initialize Fields module')
45         import medcalc
46         medcalc.medconsole.setConsoleGlobals(globals())
47         from medcalc.fieldproxy import FieldProxy
48
49         # ---- get root dir
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')
52
53         print('... Load MED file')
54         # ---- 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()
58
59         print('... Get fields')
60         # ---- get fields
61         fields = medcalc.medevents.dataManager.getFieldHandlerList()
62         self.assertTrue(len(fields) >= 2) # two make this working on repeating calls
63         self.processGuiEvents()
64
65         # **** get first field
66         field_1 = fields[0]
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()
76
77         # **** get second field
78         field_2 = fields[1]
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()
88
89         # ---- add two fields
90
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()
103
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()
118
119 if __name__ == '__main__':
120     exit = True
121     # Keep Salome GUI alive
122     if salome.sg.hasDesktop():
123       exit=False
124     unittest.main(exit=exit)