1
0
mirror of https://github.com/TomHarte/CLK.git synced 2026-04-20 10:17:05 +00:00

Realised I was actually testing PCMSegmentEventSource, not PCMSegment; implemented a spread of tests; hence fixed PCMSegmentEventSource.

This commit is contained in:
Thomas Harte
2016-12-17 21:47:13 -05:00
parent 254cc41fd6
commit 3116a2cf4c
3 changed files with 89 additions and 4 deletions
+4 -3
View File
@@ -25,13 +25,13 @@ PCMSegmentEventSource::PCMSegmentEventSource(const PCMSegment &segment) :
void PCMSegmentEventSource::reset()
{
bit_pointer_ = 0;
next_event_.length.length = -(segment_.length_of_a_bit.length >> 1);
next_event_.type = Track::Event::FluxTransition;
}
Storage::Disk::Track::Event PCMSegmentEventSource::get_next_event()
{
Storage::Disk::Track::Event next_event;
size_t initial_bit_pointer = bit_pointer_;
next_event_.length.length = bit_pointer_ ? 0 : -(segment_.length_of_a_bit.length >> 1);
const uint8_t *segment_data = segment_.data.data();
while(bit_pointer_ < segment_.number_of_bits)
@@ -43,6 +43,7 @@ Storage::Disk::Track::Event PCMSegmentEventSource::get_next_event()
if(bit) return next_event_;
}
if(initial_bit_pointer < segment_.number_of_bits) next_event_.length.length += (segment_.length_of_a_bit.length >> 1);
next_event_.type = Track::Event::IndexHole;
return next_event;
return next_event_;
}