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); }
TEST(BamHeaderTest, DecodeTest) { const string& text = "@HD\tVN:1.1\tSO:queryname\tpb:3.0.1\n" "@SQ\tSN:chr1\tLN:2038\tSP:chocobo\n" "@SQ\tSN:chr2\tLN:3042\tSP:chocobo\n" "@RG\tID:rg1\tSM:control\n" "@RG\tID:rg2\tSM:condition1\n" "@RG\tID:rg3\tSM:condition1\n" "@PG\tID:_foo_\tPN:ide\n" "@CO\tipsum and so on\n" "@CO\tcitation needed\n"; BamHeader header = BamHeader(text); EXPECT_EQ(string("1.1"), header.Version()); EXPECT_EQ(string("queryname"), header.SortOrder()); EXPECT_EQ(string("3.0.1"), header.PacBioBamVersion()); EXPECT_EQ(3, header.ReadGroups().size()); EXPECT_TRUE(header.HasReadGroup("rg1")); EXPECT_TRUE(header.HasReadGroup("rg2")); EXPECT_TRUE(header.HasReadGroup("rg3")); EXPECT_EQ(string("control"), header.ReadGroup("rg1").Sample()); EXPECT_EQ(string("condition1"), header.ReadGroup("rg2").Sample()); EXPECT_EQ(string("condition1"), header.ReadGroup("rg3").Sample()); EXPECT_EQ(2, header.Sequences().size()); EXPECT_TRUE(header.HasSequence("chr1")); EXPECT_TRUE(header.HasSequence("chr2")); EXPECT_EQ(string("chocobo"), header.Sequence("chr1").Species()); EXPECT_EQ(string("chocobo"), header.Sequence("chr2").Species()); EXPECT_EQ(string("2038"), header.Sequence("chr1").Length()); EXPECT_EQ(string("3042"), header.Sequence("chr2").Length()); EXPECT_EQ(1, header.Programs().size()); EXPECT_TRUE(header.HasProgram("_foo_")); EXPECT_EQ(string("ide"), header.Program("_foo_").Name()); EXPECT_EQ(2, header.Comments().size()); EXPECT_EQ(string("ipsum and so on"), header.Comments().at(0)); EXPECT_EQ(string("citation needed"), header.Comments().at(1)); }