1 # Copyright (C) 2006-2015 CEA/DEN, EDF R&D
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
25 class StdAloneYacsLoaderTest1(unittest.TestCase):
28 SALOMERuntime.RuntimeSALOME_setRuntime()
29 self.r = pilot.getRuntime()
30 self.l = loader.YACSLoader()# self.l.load("foreachImbr_tmp.xml")
34 """tests imbrication of foreach loop."""
35 SALOMERuntime.RuntimeSALOME_setRuntime()
37 ex=pilot.ExecutorSwig()
38 p=self.r.createProc("pr")
39 td=p.createType("double","double")
40 td2=p.createSequenceTc("seqdbl","seqdbl",td)
41 td3=p.createSequenceTc("seqdblvec","seqdblvec",td2)
42 td4=p.createSequenceTc("seqseqdblvec","seqseqdblvec",td3)
43 node1=self.r.createScriptNode("","node1")
44 node1.setScript("o1=[([1,1],[2,2,2]),([10],[11,11],[12,12,12]),([20],[21,21],[22,22,22],[23,23,23,23])]")
45 o1=node1.edAddOutputPort("o1",td4)
47 node2=self.r.createForEachLoop("node2",td3)
49 p.edAddCFLink(node1,node2)
50 p.edAddLink(o1,node2.edGetSeqOfSamplesPort())
51 node2.edGetNbOfBranchesPort().edInitInt(2)
53 node20=self.r.createBloc("node20")
54 node2.edAddChild(node20)
55 node200=self.r.createForEachLoop("node200",td2)
56 node20.edAddChild(node200)
57 node200.edGetNbOfBranchesPort().edInitInt(2)
58 p.edAddLink(node2.edGetSamplePort(),node200.edGetSeqOfSamplesPort())
59 node2000=self.r.createForEachLoop("node2000",td)
60 node2000.edGetNbOfBranchesPort().edInitInt(2)
61 node200.edAddChild(node2000)
62 p.edAddLink(node200.edGetSamplePort(),node2000.edGetSeqOfSamplesPort())
63 node20000=self.r.createScriptNode("","node20000")
64 node2000.edAddChild(node20000)
65 i1=node20000.edAddInputPort("i1",td)
66 o2=node20000.edAddOutputPort("o2",td)
67 node20000.setScript("o2=i1+2")
68 p.edAddLink(node2000.edGetSamplePort(),i1)
70 node3=self.r.createScriptNode("","node3")
71 node3.setScript("o3=i2")
73 i2=node3.edAddInputPort("i2",td4)
74 o3=node3.edAddOutputPort("o3",td4)
75 p.edAddCFLink(node2,node3)
77 ex = pilot.ExecutorSwig()
78 self.assertEqual(p.getState(),pilot.READY)
80 self.assertEqual(p.getState(),pilot.DONE)
81 zeResu=node3.getOutputPort("o3").get()
82 self.assertEqual(zeResu,[[[3.,3.],[4.,4.,4.]],[[12.],[13.,13.],[14.,14.,14.]],[[22.],[23.,23.],[24.,24.,24.],[25.,25.,25.,25.]]])
83 p.saveSchema("foreachImbrBuildFS.xml")
87 """ Non regression test. When input/output declared as pyobj hiding a string type to go to or from a ForEachLoop it previous lead
90 fname="BugPyObjStrInYacs.xml"
91 p=self.r.createProc("pr")
92 tc0=p.createInterfaceTc("python:obj:1.0","pyobj",[])
93 tc1=p.createSequenceTc("list[pyobj]","list[pyobj]",tc0)
95 node0=self.r.createScriptNode("Salome","node0")
96 node0.setScript("o1=[\"a\",\"bc\"]")
97 o1=node0.edAddOutputPort("o1",tc1)
100 node1=self.r.createForEachLoop("node1",tc0)
102 p.edAddCFLink(node0,node1)
103 node1.edGetNbOfBranchesPort().edInitInt(1)
104 p.edAddLink(o1,node1.edGetSeqOfSamplesPort())
106 node10=self.r.createScriptNode("Salome","node10")
107 node10.setScript("o1=3*i1")
108 i10_1=node10.edAddInputPort("i1",tc0)
109 o10_1=node10.edAddOutputPort("o1",tc0)
110 node1.edAddChild(node10)
111 p.edAddLink(node1.edGetSamplePort(),i10_1)
113 node2=self.r.createScriptNode("Salome","node2")
114 node2.setScript("o1=i1")
115 i2_1=node2.edAddInputPort("i1",tc1)
116 o2_1=node2.edAddOutputPort("o1",tc1)
118 p.edAddCFLink(node1,node2)
119 p.edAddLink(o10_1,i2_1)
124 ex = pilot.ExecutorSwig()
125 self.assertEqual(p.getState(),pilot.READY)
127 self.assertEqual(p.getState(),pilot.DONE)
129 self.assertEqual(p.getChildByName("node2").getOutputPort("o1").get(),['aaa','bcbcbc'])
139 if __name__ == '__main__':