Skip to content

Commit

Permalink
[TEST] io: use member in alignment tests
Browse files Browse the repository at this point in the history
  • Loading branch information
marehr committed Feb 27, 2021
1 parent 031a906 commit d59e290
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 2 deletions.
Expand Up @@ -224,6 +224,21 @@ TYPED_TEST_P(alignment_file_read, read_in_all_data)
EXPECT_EQ(seqan3::get<seqan3::field::mapq>(rec), this->mapqs[i]);
EXPECT_EQ(seqan3::get<seqan3::field::mate>(rec), this->mates[i]);
EXPECT_EQ(seqan3::get<seqan3::field::tags>(rec), this->tag_dicts[i]);

EXPECT_EQ(rec.sequence(), this->seqs[i]);
EXPECT_EQ(rec.id(), this->ids[i]);
EXPECT_EQ(rec.base_qualities(), this->quals[i]);
EXPECT_EQ(rec.sequence_position(), this->offsets[i]);
EXPECT_EQ(rec.reference_id(), 0);
EXPECT_EQ(*rec.reference_position(), this->ref_offsets[i]);
EXPECT_RANGE_EQ(std::get<0>(rec.alignment()), std::get<0>(this->alignments[i]));
EXPECT_RANGE_EQ(std::get<1>(rec.alignment()), std::get<1>(this->alignments[i]));
EXPECT_EQ(rec.flag(), this->flags[i]);
EXPECT_EQ(rec.mapping_quality(), this->mapqs[i]);
EXPECT_EQ(rec.mate_reference_id(), std::get<0>(this->mates[i]));
EXPECT_EQ(rec.mate_position(), std::get<1>(this->mates[i]));
EXPECT_EQ(rec.template_length(), std::get<2>(this->mates[i]));
EXPECT_EQ(rec.tags(), this->tag_dicts[i]);
++i;
}
}
Expand All @@ -247,6 +262,21 @@ TYPED_TEST_P(alignment_file_read, read_in_all_but_empty_data)
EXPECT_TRUE(!std::get<1>(seqan3::get<seqan3::field::mate>(*fin.begin())).has_value());
EXPECT_EQ(std::get<2>(seqan3::get<seqan3::field::mate>(*fin.begin())), int32_t{});
EXPECT_TRUE(seqan3::get<seqan3::field::tags>(*fin.begin()).empty());

EXPECT_TRUE((*fin.begin()).sequence().empty());
EXPECT_TRUE((*fin.begin()).id().empty());
EXPECT_TRUE((*fin.begin()).base_qualities().empty());
EXPECT_EQ((*fin.begin()).sequence_position(), 0);
EXPECT_TRUE(!(*fin.begin()).reference_id().has_value());
EXPECT_TRUE(!(*fin.begin()).reference_position().has_value());
EXPECT_TRUE(std::ranges::empty(std::get<0>((*fin.begin()).alignment())));
EXPECT_TRUE(std::ranges::empty(std::get<1>((*fin.begin()).alignment())));
EXPECT_EQ((*fin.begin()).flag(), seqan3::sam_flag{0u});
EXPECT_EQ((*fin.begin()).mapping_quality(), 0u);
EXPECT_TRUE(!(*fin.begin()).mate_reference_id().has_value());
EXPECT_TRUE(!(*fin.begin()).mate_position().has_value());
EXPECT_EQ((*fin.begin()).template_length(), int32_t{});
EXPECT_TRUE((*fin.begin()).tags().empty());
}

TYPED_TEST_P(alignment_file_read, read_in_almost_nothing)
Expand Down Expand Up @@ -288,6 +318,9 @@ TYPED_TEST_P(alignment_file_read, read_in_alignment_only_with_ref)

EXPECT_TRUE(std::ranges::empty(std::get<0>(seqan3::get<seqan3::field::alignment>(*fin.begin()))));
EXPECT_TRUE(std::ranges::empty(std::get<1>(seqan3::get<seqan3::field::alignment>(*fin.begin()))));

EXPECT_TRUE(std::ranges::empty(std::get<0>((*fin.begin()).alignment())));
EXPECT_TRUE(std::ranges::empty(std::get<1>((*fin.begin()).alignment())));
}
}

Expand All @@ -312,6 +345,9 @@ TYPED_TEST_P(alignment_file_read, read_in_alignment_only_without_ref)

EXPECT_TRUE(std::ranges::empty(std::get<0>(seqan3::get<seqan3::field::alignment>(*fin.begin()))));
EXPECT_TRUE(std::ranges::empty(std::get<1>(seqan3::get<seqan3::field::alignment>(*fin.begin()))));

EXPECT_TRUE(std::ranges::empty(std::get<0>((*fin.begin()).alignment())));
EXPECT_TRUE(std::ranges::empty(std::get<1>((*fin.begin()).alignment())));
}
}

Expand Down
16 changes: 14 additions & 2 deletions test/unit/io/alignment_file/alignment_file_input_test.cpp
Expand Up @@ -264,6 +264,10 @@ TEST_F(alignment_file_input_f, record_reading)
EXPECT_RANGE_EQ(seqan3::get<seqan3::field::id>(rec), id_comp[counter]);
EXPECT_RANGE_EQ(seqan3::get<seqan3::field::qual>(rec), qual_comp[counter]);

EXPECT_RANGE_EQ(rec.sequence(), seq_comp[counter]);
EXPECT_RANGE_EQ(rec.id(), id_comp[counter]);
EXPECT_RANGE_EQ(rec.base_qualities(), qual_comp[counter]);

counter++;
}

Expand Down Expand Up @@ -296,15 +300,15 @@ TEST_F(alignment_file_input_f, file_view)
#if !SEQAN3_WORKAROUND_GCC_93983
auto minimum_length_filter = std::views::filter([] (auto const & rec)
{
return size(seqan3::get<seqan3::field::seq>(rec)) >= 5;
return size(rec.sequence()) >= 5;
});
#endif

size_t counter = 1; // the first record will be filtered out
#if SEQAN3_WORKAROUND_GCC_93983
for (auto & rec : fin /*| minimum_length_filter*/)
{
if (!(size(seqan3::get<seqan3::field::seq>(rec)) >= 5))
if (!(size(rec.sequence()) >= 5))
continue;
#else // ^^^ workaround / no workaround vvv
for (auto & rec : fin | minimum_length_filter)
Expand All @@ -314,6 +318,10 @@ TEST_F(alignment_file_input_f, file_view)
EXPECT_RANGE_EQ(seqan3::get<seqan3::field::id>(rec), id_comp[counter]);
EXPECT_RANGE_EQ(seqan3::get<seqan3::field::qual>(rec), qual_comp[counter]);

EXPECT_RANGE_EQ(rec.sequence(), seq_comp[counter]);
EXPECT_RANGE_EQ(rec.id(), id_comp[counter]);
EXPECT_RANGE_EQ(rec.base_qualities(), qual_comp[counter]);

counter++;
}

Expand All @@ -334,6 +342,10 @@ void decompression_impl(fixture_t & fix, input_file_t & fin)
EXPECT_RANGE_EQ(seqan3::get<seqan3::field::id>(rec), fix.id_comp[counter]);
EXPECT_RANGE_EQ(seqan3::get<seqan3::field::qual>(rec), fix.qual_comp[counter]);

EXPECT_RANGE_EQ(rec.sequence(), fix.seq_comp[counter]);
EXPECT_RANGE_EQ(rec.id(), fix.id_comp[counter]);
EXPECT_RANGE_EQ(rec.base_qualities(), fix.qual_comp[counter]);

counter++;
}

Expand Down
6 changes: 6 additions & 0 deletions test/unit/io/alignment_file/format_bam_test.cpp
Expand Up @@ -410,6 +410,12 @@ TEST_F(bam_format, too_long_cigar_string_read)
EXPECT_RANGE_EQ(std::get<1>(seqan3::get<seqan3::field::alignment>(*fin.begin())),
std::get<1>(this->alignments[0]));
EXPECT_EQ(seqan3::get<seqan3::field::tags>(*fin.begin()).size(), 0u); // redundant CG tag is removed

EXPECT_RANGE_EQ(std::get<0>((*fin.begin()).alignment()),
std::get<0>(this->alignments[0]));
EXPECT_RANGE_EQ(std::get<1>((*fin.begin()).alignment()),
std::get<1>(this->alignments[0]));
EXPECT_EQ((*fin.begin()).tags().size(), 0u); // redundant CG tag is removed
}

{ // error: sam_tag_dictionary is not read
Expand Down
10 changes: 10 additions & 0 deletions test/unit/io/alignment_file/format_sam_test.cpp
Expand Up @@ -179,6 +179,8 @@ TEST_F(sam_format, no_hd_line_in_header)
seqan3::alignment_file_input fin{istream, seqan3::format_sam{}, seqan3::fields<seqan3::field::id>{}};

EXPECT_EQ(seqan3::get<seqan3::field::id>(*fin.begin()), std::string{"read1"});

EXPECT_EQ((*fin.begin()).id(), std::string{"read1"});
}

TEST_F(sam_format, windows_file)
Expand All @@ -187,6 +189,8 @@ TEST_F(sam_format, windows_file)
seqan3::alignment_file_input fin{istream, seqan3::format_sam{}, seqan3::fields<seqan3::field::id>{}};

EXPECT_EQ(seqan3::get<seqan3::field::id>(*fin.begin()), std::string{"read1"});

EXPECT_EQ((*fin.begin()).id(), std::string{"read1"});
}

TEST_F(sam_format, format_error_illegal_character_in_seq)
Expand Down Expand Up @@ -343,6 +347,9 @@ TEST_F(sam_format, issue2195)

EXPECT_RANGE_EQ(seqan3::get<seqan3::field::id>(*fin.begin()), std::string{"*r1"});
EXPECT_RANGE_EQ(seqan3::get<seqan3::field::qual>(*fin.begin()), expected_quality);

EXPECT_RANGE_EQ((*fin.begin()).id(), std::string{"*r1"});
EXPECT_RANGE_EQ((*fin.begin()).base_qualities(), expected_quality);
}

{
Expand All @@ -357,5 +364,8 @@ TEST_F(sam_format, issue2195)

EXPECT_RANGE_EQ(seqan3::get<seqan3::field::id>(*fin.begin()), std::string{""});
EXPECT_RANGE_EQ(seqan3::get<seqan3::field::qual>(*fin.begin()), expected_quality);

EXPECT_RANGE_EQ((*fin.begin()).id(), std::string{""});
EXPECT_RANGE_EQ((*fin.begin()).base_qualities(), expected_quality);
}
}

0 comments on commit d59e290

Please sign in to comment.