Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions OMPython/OMTypedParser.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = "Anand Kalaiarasi Ganeson, ganan642@student.liu.se, 2012-03-19, and Martin Sjölund"
__license__ = """
Expand Down Expand Up @@ -52,8 +51,6 @@
opAssoc,
)

import sys


def convertNumbers(s, l, toks):
n = toks[0]
Expand Down Expand Up @@ -142,22 +139,3 @@ def parseString(string):
if len(res) == 0:
return
return res[0]


if __name__ == "__main__":
testdata = """
(1.0,{{1,true,3},{"4\\"
",5.9,6,NONE ( )},record ABC
startTime = ErrorLevel.warning,
'stop*Time' = SOME(1.0)
end ABC;})
"""
expected = (1.0, ((1, True, 3), ('4"\n', 5.9, 6, None), {"'stop*Time'": 1.0, 'startTime': 'ErrorLevel.warning'}))
results = parseString(testdata)
if results != expected:
print("Results:", results)
print("Expected:", expected)
print("Failed")
sys.exit(1)
print("Matches expected output")
print(type(results), repr(results))
1 change: 0 additions & 1 deletion tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
__all__ = ['tests.test_OMParser', 'tests.test_ZMQ', 'tests.test_ModelicaSystem']
37 changes: 11 additions & 26 deletions tests/test_ArrayDimension.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,19 @@
import OMPython
import tempfile
import shutil
import os


# do not change the prefix class name, the class name should have prefix "Test"
# according to the documenation of pytest
class Test_ArrayDimension:
def test_ArrayDimension(self):
omc = OMPython.OMCSessionZMQ()
def test_ArrayDimension(tmp_path):
omc = OMPython.OMCSessionZMQ()

# create a temp dir for each session
tempdir = tempfile.mkdtemp()
if not os.path.exists(tempdir):
return print(tempdir, " cannot be created")
omc.sendExpression(f'cd("{tmp_path.as_posix()}")')

tempdirExp = "".join(["cd(", "\"", tempdir, "\"", ")"]).replace("\\", "/")
omc.sendExpression(tempdirExp)
omc.sendExpression('loadString("model A Integer x[5+1,1+6]; end A;")')
omc.sendExpression("getErrorString()")

omc.sendExpression("loadString(\"model A Integer x[5+1,1+6]; end A;\")")
omc.sendExpression("getErrorString()")
result = omc.sendExpression("getComponents(A)")
assert result[0][-1] == (6, 7), "array dimension does not match"

result = omc.sendExpression("getComponents(A)")
assert result[0][-1] == (6, 7), f"array dimension does not match the expected value. Got: {result[0][-1]}, Expected: {(6, 7)}"
omc.sendExpression('loadString("model A Integer y = 5; Integer x[y+1,1+9]; end A;")')
omc.sendExpression("getErrorString()")

omc.sendExpression("loadString(\"model A Integer y = 5; Integer x[y+1,1+9]; end A;\")")
omc.sendExpression("getErrorString()")

result = omc.sendExpression("getComponents(A)")
assert result[-1][-1] == ('y+1', 10), f"array dimension does not match the expected value. Got: {result[-1][-1]}, Expected: {('y+1', 10)}"

omc.__del__()
shutil.rmtree(tempdir, ignore_errors=True)
result = omc.sendExpression("getComponents(A)")
assert result[-1][-1] == ('y+1', 10), "array dimension does not match"
40 changes: 15 additions & 25 deletions tests/test_FMIExport.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,24 @@
import OMPython
import unittest
import shutil
import os


class testFMIExport(unittest.TestCase):
def __init__(self, *args, **kwargs):
super(testFMIExport, self).__init__(*args, **kwargs)
self.tmp = ""

def __del__(self):
shutil.rmtree(self.tmp, ignore_errors=True)

def testCauerLowPassAnalog(self):
print("testing Cauer")
mod = OMPython.ModelicaSystem(modelName="Modelica.Electrical.Analog.Examples.CauerLowPassAnalog",
lmodel=["Modelica"])
self.tmp = mod.getWorkDirectory()

def test_CauerLowPassAnalog():
mod = OMPython.ModelicaSystem(modelName="Modelica.Electrical.Analog.Examples.CauerLowPassAnalog",
lmodel=["Modelica"])
tmp = mod.getWorkDirectory()
try:
fmu = mod.convertMo2Fmu(fileNamePrefix="CauerLowPassAnalog")
self.assertEqual(True, os.path.exists(fmu))
assert os.path.exists(fmu)
finally:
shutil.rmtree(tmp, ignore_errors=True)

def testDrumBoiler(self):
print("testing DrumBoiler")
mod = OMPython.ModelicaSystem(modelName="Modelica.Fluid.Examples.DrumBoiler.DrumBoiler", lmodel=["Modelica"])
self.tmp = mod.getWorkDirectory()

def test_DrumBoiler():
mod = OMPython.ModelicaSystem(modelName="Modelica.Fluid.Examples.DrumBoiler.DrumBoiler", lmodel=["Modelica"])
tmp = mod.getWorkDirectory()
try:
fmu = mod.convertMo2Fmu(fileNamePrefix="DrumBoiler")
self.assertEqual(True, os.path.exists(fmu))


if __name__ == '__main__':
unittest.main()
assert os.path.exists(fmu)
finally:
shutil.rmtree(tmp, ignore_errors=True)
81 changes: 42 additions & 39 deletions tests/test_FMIRegression.py
Original file line number Diff line number Diff line change
@@ -1,65 +1,68 @@
import OMPython
import tempfile
import pathlib
import shutil
import os


# do not change the prefix class name, the class name should have prefix "Test"
# according to the documenation of pytest
class Test_FMIRegression:
def buildModelFMU(modelName):
omc = OMPython.OMCSessionZMQ()

def buildModelFMU(self, modelName):
omc = OMPython.OMCSessionZMQ()

# create a temp dir for each session
tempdir = tempfile.mkdtemp()
if not os.path.exists(tempdir):
return print(tempdir, " cannot be created")

tempdirExp = "".join(["cd(", "\"", tempdir, "\"", ")"]).replace("\\", "/")
omc.sendExpression(tempdirExp)
tempdir = pathlib.Path(tempfile.mkdtemp())
try:
omc.sendExpression(f'cd("{tempdir.as_posix()}")')

omc.sendExpression("loadModel(Modelica)")
omc.sendExpression("getErrorString()")

fileNamePrefix = modelName.split(".")[-1]
exp = "buildModelFMU(" + modelName + ", fileNamePrefix=\"" + fileNamePrefix + "\"" + ")"

exp = f'buildModelFMU({modelName}, fileNamePrefix="{fileNamePrefix}")'
fmu = omc.sendExpression(exp)
assert os.path.exists(fmu)

omc.__del__()
finally:
del omc
shutil.rmtree(tempdir, ignore_errors=True)

def test_Modelica_Blocks_Examples_Filter(self):
self.buildModelFMU("Modelica.Blocks.Examples.Filter")

def test_Modelica_Blocks_Examples_RealNetwork1(self):
self.buildModelFMU("Modelica.Blocks.Examples.RealNetwork1")
def test_Modelica_Blocks_Examples_Filter():
buildModelFMU("Modelica.Blocks.Examples.Filter")


def test_Modelica_Blocks_Examples_RealNetwork1():
buildModelFMU("Modelica.Blocks.Examples.RealNetwork1")


def test_Modelica_Electrical_Analog_Examples_CauerLowPassAnalog():
buildModelFMU("Modelica.Electrical.Analog.Examples.CauerLowPassAnalog")


def test_Modelica_Electrical_Digital_Examples_FlipFlop():
buildModelFMU("Modelica.Electrical.Digital.Examples.FlipFlop")


def test_Modelica_Mechanics_Rotational_Examples_FirstGrounded():
buildModelFMU("Modelica.Mechanics.Rotational.Examples.FirstGrounded")


def test_Modelica_Mechanics_Rotational_Examples_CoupledClutches():
buildModelFMU("Modelica.Mechanics.Rotational.Examples.CoupledClutches")


def test_Modelica_Electrical_Analog_Examples_CauerLowPassAnalog(self):
self.buildModelFMU("Modelica.Electrical.Analog.Examples.CauerLowPassAnalog")
def test_Modelica_Mechanics_MultiBody_Examples_Elementary_DoublePendulum():
buildModelFMU("Modelica.Mechanics.MultiBody.Examples.Elementary.DoublePendulum")

def test_Modelica_Electrical_Digital_Examples_FlipFlop(self):
self.buildModelFMU("Modelica.Electrical.Digital.Examples.FlipFlop")

def test_Modelica_Mechanics_Rotational_Examples_FirstGrounded(self):
self.buildModelFMU("Modelica.Mechanics.Rotational.Examples.FirstGrounded")
def test_Modelica_Mechanics_MultiBody_Examples_Elementary_FreeBody():
buildModelFMU("Modelica.Mechanics.MultiBody.Examples.Elementary.FreeBody")

def test_Modelica_Mechanics_Rotational_Examples_CoupledClutches(self):
self.buildModelFMU("Modelica.Mechanics.Rotational.Examples.CoupledClutches")

def test_Modelica_Mechanics_MultiBody_Examples_Elementary_DoublePendulum(self):
self.buildModelFMU("Modelica.Mechanics.MultiBody.Examples.Elementary.DoublePendulum")
def test_Modelica_Fluid_Examples_PumpingSystem():
buildModelFMU("Modelica.Fluid.Examples.PumpingSystem")

def test_Modelica_Mechanics_MultiBody_Examples_Elementary_FreeBody(self):
self.buildModelFMU("Modelica.Mechanics.MultiBody.Examples.Elementary.FreeBody")

def test_Modelica_Fluid_Examples_PumpingSystem(self):
self.buildModelFMU("Modelica.Fluid.Examples.PumpingSystem")
def test_Modelica_Fluid_Examples_TraceSubstances_RoomCO2WithControls():
buildModelFMU("Modelica.Fluid.Examples.TraceSubstances.RoomCO2WithControls")

def test_Modelica_Fluid_Examples_TraceSubstances_RoomCO2WithControls(self):
self.buildModelFMU("Modelica.Fluid.Examples.TraceSubstances.RoomCO2WithControls")

def test_Modelica_Clocked_Examples_SimpleControlledDrive_ClockedWithDiscreteTextbookController(self):
self.buildModelFMU("Modelica.Clocked.Examples.SimpleControlledDrive.ClockedWithDiscreteTextbookController")
def test_Modelica_Clocked_Examples_SimpleControlledDrive_ClockedWithDiscreteTextbookController():
buildModelFMU("Modelica.Clocked.Examples.SimpleControlledDrive.ClockedWithDiscreteTextbookController")
Loading
Loading