Skip to content

Commit dedb1ea

Browse files
* Add tests for stream continuity during iteration
1 parent 20c3a53 commit dedb1ea

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

package/MDAnalysis/coordinates/base.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2008,7 +2008,9 @@ def _reopen(self):
20082008
raise RuntimeError(
20092009
"{}: Cannot reopen stream".format(self.__class__.__name__)
20102010
)
2011-
self._frame = -1
2011+
if self._frame == 0:
2012+
# only reset when stream hasn't been iterated using next
2013+
self._frame = -1
20122014
self._reopen_called = True
20132015

20142016
def timeseries(self, **kwargs):

testsuite/MDAnalysisTests/coordinates/test_imd.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,27 @@ def test_iterate_current_frame_no_transformations(self, reader):
558558
p2 = reader[reader.frame].positions
559559
assert_allclose(p1, p2)
560560

561+
def test_iterate_continuity_1(self, reader):
562+
step = -1
563+
for ts in reader:
564+
step += 1
565+
assert ts.data["step"] == step
566+
if step == 4:
567+
break
568+
569+
def test_iterate_continuity_2(self, reader):
570+
ts = reader[0]
571+
assert ts.data["step"] == 0
572+
reader.next()
573+
ts = reader[1]
574+
assert ts.data["step"] == 1
575+
step = 1
576+
for ts in reader:
577+
step += 1
578+
assert ts.data["step"] == step
579+
if step == 4:
580+
break
581+
561582

562583
@pytest.mark.skipif(not HAS_IMDCLIENT, reason="IMDClient not installed")
563584
class TestAnalysisClasses:

0 commit comments

Comments
 (0)