TEST(BamHeaderTest, DefaultConstruction) { BamHeader header; EXPECT_TRUE(header.Version().empty()); EXPECT_TRUE(header.SortOrder().empty()); // default to unknown ? EXPECT_TRUE(header.ReadGroups().empty()); EXPECT_TRUE(header.Sequences().empty()); EXPECT_TRUE(header.Programs().empty()); EXPECT_TRUE(header.Comments().empty()); EXPECT_THROW(header.Program("foo"), std::exception); EXPECT_THROW(header.ReadGroup("foo"), std::exception); EXPECT_THROW(header.SequenceId("foo"), std::exception); EXPECT_THROW(header.SequenceLength(42), std::exception); EXPECT_THROW(header.SequenceName(42), std::exception); }
void Interval(const BamHeader& header, const GenomicInterval& interval) { htsIterator_.reset(nullptr); if (header.HasSequence(interval.Name())) { auto id = header.SequenceId(interval.Name()); if (id >= 0 && static_cast<size_t>(id) < header.NumSequences()) { htsIterator_.reset(bam_itr_queryi(htsIndex_.get(), id, interval.Start(), interval.Stop())); } } if (!htsIterator_) throw std::runtime_error("could not create iterator for requested region"); }