Skip to content

Commit

Permalink
Renamed iter_segments() to __iter__().
Browse files Browse the repository at this point in the history
  • Loading branch information
eerimoq committed Aug 24, 2017
1 parent e1c3f19 commit 25ef872
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 12 deletions.
13 changes: 10 additions & 3 deletions bincopy.py
Original file line number Diff line number Diff line change
Expand Up @@ -798,7 +798,7 @@ def fill(self, value=b'\xff'):
previous_segment_maximum_address = None
fill_segments = []

for minimum_address, maximum_address, _ in self.iter_segments():
for minimum_address, maximum_address, _ in self:
if previous_segment_maximum_address is not None:
fill_size = minimum_address - previous_segment_maximum_address
fill_size_words = fill_size // self.word_size_bytes
Expand Down Expand Up @@ -902,7 +902,7 @@ def info(self):

info += 'Data address ranges:\n'

for minimum_address, maximum_address, _ in self.iter_segments():
for minimum_address, maximum_address, _ in self:
minimum_address //= self.word_size_bytes
maximum_address //= self.word_size_bytes
info += ' 0x%08x - 0x%08x\n' % (
Expand All @@ -911,14 +911,21 @@ def info(self):

return info

def iter_segments(self):
def __iter__(self):
"""Iterate over all data segments, returning them one at a time.
"""

for segment in self.segments.list:
yield segment.minimum_address, segment.maximum_address, segment.data

def __len__(self):
"""Returns the number of segments.
"""

return len(self.segments.list)

def __iadd__(self, other):
self.add_srec(other.as_srec())

Expand Down
29 changes: 20 additions & 9 deletions tests/test_bincopy.py
Original file line number Diff line number Diff line change
Expand Up @@ -337,15 +337,26 @@ def test_minimum_maximum(self):
self.assertEqual(binfile.get_minimum_address(), 0)
self.assertEqual(binfile.get_maximum_address(), 70)

def test_iter_segments(self):
binfile = bincopy.BinFile()
with open('tests/files/in.s19', 'r') as fin:
binfile.add_srec(fin.read())
i = 0
for begin, end, data in binfile.iter_segments():
del begin, end, data
i += 1
self.assertEqual(i, 1)
def test_iterate_over_all_segments(self):
binfile = bincopy.BinFile()
binfile.add_file('tests/files/in_exclude_2_4.s19')
segments = [segment for segment in binfile]
self.assertEqual(len(segments), 2)
self.assertEqual(
segments,
[
(0, 2, bytearray(b'|\x08')),
(4, 70, bytearray(b'\x90\x01\x00\x04\x94!\xff\xf0|l\x1bx|\x8c'
b'#x<`\x00\x008c\x00\x00K\xff\xff\xe59\x80'
b'\x00\x00}\x83cx\x80\x01\x00\x148!\x00\x10'
b'|\x08\x03\xa6N\x80\x00 Hello world.\n\x00'))
]
)

def test_length(self):
binfile = bincopy.BinFile()
binfile.add_file('tests/files/in_exclude_2_4.s19')
self.assertEqual(len(binfile), 2)

def test_add_files(self):
binfile = bincopy.BinFile()
Expand Down

0 comments on commit 25ef872

Please sign in to comment.