Clean up some gmxapi sources and tests.
[alexxy/gromacs.git] / python_packaging / src / test / test_fileio.py
index 3dd05367768c1d57b521cc1f1c25fca479bd5876..2618464112dd96abb7052653e4d5d9d5f9a4b90e 100644 (file)
@@ -1,7 +1,7 @@
 #
 # This file is part of the GROMACS molecular simulation package.
 #
-# Copyright (c) 2019, by the GROMACS development team, led by
+# Copyright (c) 2019,2021, by the GROMACS development team, led by
 # Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
 # and including many others, as listed in the AUTHORS file in the
 # top-level source directory and at http://www.gromacs.org.
@@ -60,34 +60,16 @@ def test_tprfile_read_old(spc_water_box):
 
 
 @pytest.mark.usefixtures('cleandir')
-def test_core_tprcopy_alt(spc_water_box):
-    """Test gmx.core.copy_tprfile() for update of end_time.
-
-    Set a new end time that is 5000 steps later than the original. Read dt
-    from file to avoid floating point round-off errors.
-
-    Transitively test gmx.fileio.read_tpr()
-    """
+def test_read_tpr(spc_water_box):
     tpr_filename = spc_water_box
-    additional_steps = 5000
-    sim_input = read_tpr(tpr_filename)
-    params = sim_input.parameters.extract()
-    dt = params['dt']
-    nsteps = params['nsteps']
-    init_step = params['init-step']
-    initial_endtime = (init_step + nsteps) * dt
-    new_endtime = initial_endtime + additional_steps*dt
-    _, temp_filename = tempfile.mkstemp(suffix='.tpr')
-    gmxapi._gmxapi.rewrite_tprfile(source=tpr_filename, destination=temp_filename, end_time=new_endtime)
-    tprfile = TprFile(temp_filename, 'r')
-    with tprfile as fh:
-        params = read_tpr(fh).parameters.extract()
-        dt = params['dt']
-        nsteps = params['nsteps']
-        init_step = params['init-step']
-        assert (init_step + nsteps) * dt == new_endtime
-
-    os.unlink(temp_filename)
+    tpr_source = gmxapi.read_tpr(tpr_filename)
+    assert 'parameters' in tpr_source.output
+    assert hasattr(tpr_source.output, 'parameters')
+    parameters = tpr_source.output.parameters.result()
+    assert 'nsteps' in parameters
+    assert 'foo' not in parameters
+    assert parameters['nsteps'] == 2
+    assert tpr_source.output.parameters['nsteps'].result() == 2
 
 
 @pytest.mark.usefixtures('cleandir')
@@ -100,16 +82,22 @@ def test_write_tpr_file(spc_water_box):
     params = sim_input.parameters.extract()
     nsteps = params['nsteps']
     init_step = params['init-step']
+    # Choose a new nsteps to check integer parameter setting.
     new_nsteps = init_step + additional_steps
+    # Choose a new dt to check floating point parameter setting
+    new_dt = params['dt'] * 2.
 
     sim_input.parameters.set('nsteps', new_nsteps)
+    sim_input.parameters.set('dt', new_dt)
 
     _, temp_filename = tempfile.mkstemp(suffix='.tpr')
     gmxapi.simulation.fileio.write_tpr_file(temp_filename, input=sim_input)
     tprfile = TprFile(temp_filename, 'r')
     with tprfile as fh:
         params = read_tpr(fh).parameters.extract()
-        dt = params['dt']
+        # Note that we have chosen an exactly representable dt for spc_water_box.
+        # Otherwise, we would have to use pytest.approx with a suitable tolerance.
+        assert params['dt'] == new_dt
         assert params['nsteps'] != nsteps
         assert params['nsteps'] == new_nsteps