Skip to content

Commit f882daa

Browse files
authored
Add read from file test (#121)
1 parent 0ecc73b commit f882daa

File tree

4 files changed

+38
-1
lines changed

4 files changed

+38
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ class PythonSlave(Fmi2Slave):
109109

110110
# Note:
111111
# it is also possible to explicitly define getters and setters as lambdas in case the variable is not backed by a Python field.
112-
# self.register_variable(Real("myReal", causality=Fmi2Causality.output, getter=lambda: self.realOut, setter=lambda v: self.realOut = v))
112+
# self.register_variable(Real("myReal", causality=Fmi2Causality.output, getter=lambda: self.realOut, setter=lambda v: set_real_out(v))
113113

114114
def do_step(self, current_time, step_size):
115115
return True

pythonfmu/tests/data/hello.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello world!
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from pythonfmu.fmi2slave import Fmi2Slave, Fmi2Causality, Fmi2Variability, String
2+
3+
4+
class PythonSlaveReadFile(Fmi2Slave):
5+
6+
def __init__(self, **kwargs):
7+
super().__init__(**kwargs)
8+
9+
with (open(f'{self.resources}/hello.txt', 'r')) as file:
10+
data = file.read()
11+
12+
self.register_variable(
13+
String("file_content", getter=lambda: data,
14+
causality=Fmi2Causality.output,
15+
variability=Fmi2Variability.constant))
16+
17+
def do_step(self, current_time, step_size):
18+
return True

pythonfmu/tests/test_integration.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,24 @@ def test_integration_get(tmp_path):
174174
assert model_value == value
175175

176176

177+
@pytest.mark.integration
178+
def test_integration_read_from_file(tmp_path):
179+
script_file = Path(__file__).parent / "slaves/pythonslave_read_file.py"
180+
project_file = Path(__file__).parent / "data/hello.txt"
181+
fmu = FmuBuilder.build_FMU(script_file, project_files=[project_file], dest=tmp_path, needsExecutionTool="false")
182+
assert fmu.exists()
183+
model = pyfmi.load_fmu(str(fmu))
184+
185+
variables = model.get_model_variables()
186+
var = variables["file_content"]
187+
model_value = model.get_string([var.value_reference])[0]
188+
189+
with (open(project_file, 'r')) as file:
190+
data = file.read()
191+
192+
assert model_value == data
193+
194+
177195
@pytest.mark.integration
178196
def test_integration_set(tmp_path):
179197
script_file = Path(__file__).parent / "slaves/pythonslave.py"

0 commit comments

Comments
 (0)