mirror of
https://github.com/TomHarte/CLK.git
synced 2024-08-22 11:29:03 +00:00
Attempted to consolidate some of the repetition.
This commit is contained in:
parent
72ca06cf8d
commit
e4e0347638
@ -73,6 +73,12 @@
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)patchTrack:(std::shared_ptr<Storage::Disk::Track>)track withSegment:(Storage::Disk::PCMSegment)segment atTime:(Storage::Time)time
|
||||||
|
{
|
||||||
|
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(track.get());
|
||||||
|
patchable->add_segment(time, segment);
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - Repeating Asserts
|
#pragma mark - Repeating Asserts
|
||||||
|
|
||||||
- (void)assertOneThirtyTwosForTrack:(std::shared_ptr<Storage::Disk::Track>)track
|
- (void)assertOneThirtyTwosForTrack:(std::shared_ptr<Storage::Disk::Track>)track
|
||||||
@ -105,15 +111,7 @@
|
|||||||
- (void)testSingleSplice
|
- (void)testSingleSplice
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.patchableTogglingTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.patchableTogglingTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(1, 32), 1, {0xff}) atTime:Storage::Time(3, 128)];
|
||||||
|
|
||||||
// add a single one, at 1/32 length at 3/128. So that should shift the location of the second flux transition
|
|
||||||
Storage::Disk::PCMSegment one_segment;
|
|
||||||
one_segment.data = {0xff};
|
|
||||||
one_segment.number_of_bits = 1;
|
|
||||||
one_segment.length_of_a_bit.length = 1;
|
|
||||||
one_segment.length_of_a_bit.clock_rate = 32;
|
|
||||||
patchable->add_segment(Storage::Time(3, 128), one_segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
@ -128,14 +126,7 @@
|
|||||||
- (void)testLeftReplace
|
- (void)testLeftReplace
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.patchableTogglingTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.patchableTogglingTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(1, 16), 8, {0x00}) atTime:Storage::Time(0)];
|
||||||
|
|
||||||
Storage::Disk::PCMSegment zero_segment;
|
|
||||||
zero_segment.data = {0x00};
|
|
||||||
zero_segment.number_of_bits = 8;
|
|
||||||
zero_segment.length_of_a_bit.length = 1;
|
|
||||||
zero_segment.length_of_a_bit.clock_rate = 16;
|
|
||||||
patchable->add_segment(Storage::Time(0), zero_segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
@ -148,14 +139,7 @@
|
|||||||
- (void)testRightReplace
|
- (void)testRightReplace
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.patchableTogglingTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.patchableTogglingTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(1, 16), 8, {0x00}) atTime:Storage::Time(1, 2)];
|
||||||
|
|
||||||
Storage::Disk::PCMSegment zero_segment;
|
|
||||||
zero_segment.data = {0x00};
|
|
||||||
zero_segment.number_of_bits = 8;
|
|
||||||
zero_segment.length_of_a_bit.length = 1;
|
|
||||||
zero_segment.length_of_a_bit.clock_rate = 16;
|
|
||||||
patchable->add_segment(Storage::Time(1, 2), zero_segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
@ -181,14 +165,7 @@
|
|||||||
- (void)testMultiTrimBothSideReplace
|
- (void)testMultiTrimBothSideReplace
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(1, 16), 8, {0x00}) atTime:Storage::Time(1, 8)];
|
||||||
|
|
||||||
Storage::Disk::PCMSegment segment;
|
|
||||||
segment.data = {0x00};
|
|
||||||
segment.number_of_bits = 8;
|
|
||||||
segment.length_of_a_bit.length = 1;
|
|
||||||
segment.length_of_a_bit.clock_rate = 16;
|
|
||||||
patchable->add_segment(Storage::Time(1, 8), segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
@ -201,14 +178,7 @@
|
|||||||
- (void)testMultiTrimRightReplace
|
- (void)testMultiTrimRightReplace
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(3, 8), 1, {0x00}) atTime:Storage::Time(1, 8)];
|
||||||
|
|
||||||
Storage::Disk::PCMSegment segment;
|
|
||||||
segment.data = {0x00};
|
|
||||||
segment.number_of_bits = 1;
|
|
||||||
segment.length_of_a_bit.length = 3;
|
|
||||||
segment.length_of_a_bit.clock_rate = 8;
|
|
||||||
patchable->add_segment(Storage::Time(1, 8), segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
@ -221,14 +191,7 @@
|
|||||||
- (void)testMultiTrimLeftReplace
|
- (void)testMultiTrimLeftReplace
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(3, 8), 1, {0x00}) atTime:Storage::Time(1, 4)];
|
||||||
|
|
||||||
Storage::Disk::PCMSegment segment;
|
|
||||||
segment.data = {0x00};
|
|
||||||
segment.number_of_bits = 1;
|
|
||||||
segment.length_of_a_bit.length = 3;
|
|
||||||
segment.length_of_a_bit.clock_rate = 8;
|
|
||||||
patchable->add_segment(Storage::Time(1, 4), segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
@ -243,14 +206,7 @@
|
|||||||
- (void)testTwoSegmentOverlap
|
- (void)testTwoSegmentOverlap
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(1, 32), 8, {0x00}) atTime:Storage::Time(1, 8)];
|
||||||
|
|
||||||
Storage::Disk::PCMSegment segment;
|
|
||||||
segment.data = {0x00};
|
|
||||||
segment.number_of_bits = 8;
|
|
||||||
segment.length_of_a_bit.length = 1;
|
|
||||||
segment.length_of_a_bit.clock_rate = 32;
|
|
||||||
patchable->add_segment(Storage::Time(1, 8), segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
@ -263,14 +219,7 @@
|
|||||||
- (void)testTwoSegmentRightReplace
|
- (void)testTwoSegmentRightReplace
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(3, 8), 1, {0x00}) atTime:Storage::Time(1, 8)];
|
||||||
|
|
||||||
Storage::Disk::PCMSegment segment;
|
|
||||||
segment.data = {0x00};
|
|
||||||
segment.number_of_bits = 1;
|
|
||||||
segment.length_of_a_bit.length = 3;
|
|
||||||
segment.length_of_a_bit.clock_rate = 8;
|
|
||||||
patchable->add_segment(Storage::Time(1, 8), segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
@ -283,14 +232,7 @@
|
|||||||
- (void)testTwoSegmentLeftReplace
|
- (void)testTwoSegmentLeftReplace
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.fourSegmentPatchedTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(3, 8), 1, {0x00}) atTime:Storage::Time(0)];
|
||||||
|
|
||||||
Storage::Disk::PCMSegment segment;
|
|
||||||
segment.data = {0x00};
|
|
||||||
segment.number_of_bits = 1;
|
|
||||||
segment.length_of_a_bit.length = 3;
|
|
||||||
segment.length_of_a_bit.clock_rate = 8;
|
|
||||||
patchable->add_segment(Storage::Time(0), segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
@ -305,14 +247,7 @@
|
|||||||
- (void)testWrappingSegment
|
- (void)testWrappingSegment
|
||||||
{
|
{
|
||||||
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.patchableTogglingTrack;
|
std::shared_ptr<Storage::Disk::Track> patchableTrack = self.patchableTogglingTrack;
|
||||||
Storage::Disk::PCMPatchedTrack *patchable = static_cast<Storage::Disk::PCMPatchedTrack *>(patchableTrack.get());
|
[self patchTrack:patchableTrack withSegment:Storage::Disk::PCMSegment(Storage::Time(5, 2), 1, {0x00}) atTime:Storage::Time(0)];
|
||||||
|
|
||||||
Storage::Disk::PCMSegment segment;
|
|
||||||
segment.data = {0x00};
|
|
||||||
segment.number_of_bits = 1;
|
|
||||||
segment.length_of_a_bit.length = 5;
|
|
||||||
segment.length_of_a_bit.clock_rate = 2;
|
|
||||||
patchable->add_segment(Storage::Time(0), segment);
|
|
||||||
|
|
||||||
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
std::vector<Storage::Disk::Track::Event> events = [self eventsFromTrack:patchableTrack];
|
||||||
Storage::Time total_length = [self timeForEvents:events];
|
Storage::Time total_length = [self timeForEvents:events];
|
||||||
|
@ -27,6 +27,10 @@ struct PCMSegment {
|
|||||||
Time length_of_a_bit;
|
Time length_of_a_bit;
|
||||||
unsigned int number_of_bits;
|
unsigned int number_of_bits;
|
||||||
std::vector<uint8_t> data;
|
std::vector<uint8_t> data;
|
||||||
|
|
||||||
|
PCMSegment(Time length_of_a_bit, unsigned int number_of_bits, std::vector<uint8_t> data)
|
||||||
|
: length_of_a_bit(length_of_a_bit), number_of_bits(number_of_bits), data(data) {}
|
||||||
|
PCMSegment() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
Loading…
Reference in New Issue
Block a user